Object
- 모든 클래스의 최상위 클래스
- 모든 클래스가 직접 및 간접적으로 상속
쓰이는 상황
- equals() : 두 객체를 비교
- hashCode() : 객체의 해시코드 반환
- toString() : 객체의 문자열 반환
주의할 점
- 몇 가지 기본적인 메서드만 제공하기 때문에 개발자가 직접 적절한 방식으로 오버라이드하여 사용해야 함
- equals(), hashCode()를 오버라이드 할때는 서로 일관되게 구현해야 함
예시
public class ObjectExample {
private String name;
private int id;
public ObjectExample(String name, int id) {
this.name = name;
this.id = id;
}
// 오버라이드된 toString 메서드
@Override
public String toString() {
return "ObjectExample { " +
"name='" + name + '\'' +
", id=" + id +
" }";
}
// 오버라이드된 equals 메서드
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ObjectExample that = (ObjectExample) obj;
return id == that.id && name.equals(that.name);
}
// 오버라이드된 hashCode 메서드
@Override
public int hashCode() {
int result = name.hashCode();
result = 31 * result + id;
return result;
}
public static void main(String[] args) {
ObjectExample obj1 = new ObjectExample("John", 1);
ObjectExample obj2 = new ObjectExample("John", 1);
// toString 메서드 호출
System.out.println(obj1);
// equals 메서드 호출
System.out.println("obj1.equals(obj2): " + obj1.equals(obj2));
// hashCode 메서드 호출
System.out.println("Hashcode of obj1: " + obj1.hashCode());
}
}