package ch01_Object;
//public class ExObject extends Object{
public class ExObject {
public static void main(String[] args) {
// import 하지 않아도 사용할 수 있는 class(System, Object...) → java.lang package에 있음. → import하지 않아도 자동으로 import됌.
// java의 최상위 class → JAVA 의 모든 class는 Object를 상속받음.
Object objA = new Object();
Object objB = new Object();
// getClass() : class type 변환.
System.out.println("objA.getClasses() : " + objA.getClass());
System.out.println();
// hashCode() : 객체 고유번호. → 중복되지 않음.
// 10진수.
System.out.println("objA.hashCode() : " + objA.hashCode());
System.out.println("objB.hashCode() : " + objB.hashCode());
System.out.println();
// toString() : getClass() + hashCode() 조합.
// 16진수로 바뀜.
System.out.println("objA.toString() : " + objA.toString());
System.out.println("objA : " + objA);
System.out.println("objB.toString() : " + objB.toString());
System.out.println("objB : " + objB);
System.out.println();
// equals() : 동일한 객체인지 확인.
System.out.println("objA.equals(objB) : " + objA.equals(objB));
System.out.println();
}
}
package ch01_Object;
/*
* Car class 를 정의하고, CarMain class 에서 테스트 하세요
* - 제조회사, 모델명의 관리가 가능합니다
* - 제조회사, 모델명이 같으면 동일한 차량으로 판단해야 합니다
* - 변수명을 사용해서 차량 정보를 확인할 수 있습니다
*/
public class Car {
private String company;
private String model;
public Car(String company, String model) {
this.company = company;
this.model = model;
}
public int hashCode() {
return company.hashCode() + model.hashCode();
}
public boolean equals(Object obj) {
if(obj instanceof Car) {
Car tmp = (Car) obj;
// if(this.company.equals(tmp.company) && this.model.equals(tmp.model)) {
// return true;
// }
if(!company.equals(tmp.company))
return false;
if(!model.equals(tmp.model))
return false;
return true;
}
return false;
}
public String toString() {
return "제조회사 : " + company + "\\n모델명 : " + model;
}
}
--------------------------------------------------------------------------------
// CarMain
package ch01_Object;
public class CarMain {
public static void main(String[] args) {
Car car1 = new Car("현대","아반떼");
Car car2 = new Car("현대","아반떼");
Car car3 = new Car("기아","ev5");
System.out.println("car1.equals(car2) : " + car1.equals(car2));
System.out.println("car1.equals(car3) : " + car1.equals(car3));
System.out.println(car1);
System.out.println(car2);
System.out.println(car3);
}
}
package ch01_Object;
public class Product {
private String serial; // 제품 고유 번호.
public Product(String serial) {
this.serial=serial;
}
// hashcode method
public int hashCode() {
return serial.hashCode();
}
public boolean equals(Object obj) { // UP casting
if(obj instanceof Product) { // 같은 타입인지 확인.
Product tmp = (Product)obj; // 원래 타입으로 반환. Downcasting.
if(this.serial.equals(tmp.serial)) { // 현재 serial값과 넘어온 serial 값 비교.
return true;
}
}
return false;
}
public String toString() {
return "제품번호 : " + serial;
}
public void showSerial() {
System.out.println("제품번호 : " + serial);
}
}
--------------------------------------------------------------------------------
// ProductManager
package ch01_Object;
public class ProductManager {
public static void main(String[] args) {
Product pro1 = new Product("001");
Product pro2 = new Product("002");
Product pro3 = new Product("001");
System.out.println();
System.out.println(pro1.equals(pro2));
System.out.println(pro1.equals(pro3));
System.out.println(pro1.toString());
}
}