모든 객체는 Object를 상속받음.
Object fruit = new Fruit("사과");
그래서 모든 객체는 Object의 메소드를 사용할 수 있음.
.hashCode(), .toString(), .equals()
class Fruit {
private String name;
Fruit(String name) {
this.name = name;
}
String getName() {
return name;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Fruit) {
Fruit tempFruit = (Fruit) obj;
return name.equals(tempFruit.name);
} else {
return false;
}
}
@Override
public String toString() {
return "Fruit 이름:"+name;
}
@Override
public int hashCode() {
int salt = 7;
return 31 * salt + name.hashCode();
}
}
public class Main {
public static void main(String[] args) {
Fruit fruit1 = new Fruit("사과");
Fruit fruit2 = new Fruit("사과");
Fruit fruit3 = new Fruit("포도");
Object o = new Object();
Main obj = new Main();
// System.out.println(obj.hashCode());
// System.out.println(o.hashCode());
// // TODO : toString 재정의
// System.out.println(fruit1.toString());
// TODO : 동일한 해시코드 (fruit1 == fruit2)
System.out.println(fruit1.hashCode() == fruit2.hashCode()); //true
// TODO : 동일하지 않은 해시코드 (fruit1 != fruit3)
System.out.println(fruit1.hashCode() == fruit3.hashCode()); //false
System.out.println(fruit1 == fruit2); //false
// TODO : 동일한 객체 (fruit1 == fruit2)
System.out.println(fruit1.equals(fruit2)); //true
// TODO : 동일하지 않은 객체 (fruit1 != fruit3)
System.out.println(fruit1.equals(fruit3)); //false
}
}