Java에서 Object 클래스는 모든 클래스의 최상위 클래스입니다. 이 클래스의 중요성과 주요 메서드들에 대해 자세히 알아보겠습니다.
Object 클래스는 java.lang 패키지에 속해 있으며, 모든 Java 클래스의 루트 클래스입니다. 즉, 모든 클래스는 자동으로 Object 클래스를 상속받습니다.
public class MyClass { // 암시적으로 extends Object가 포함됩니다.
// 클래스 내용
}
getClass().getName() + '@' + Integer.toHexString(hashCode())@Override
public String toString() {
return "MyClass{attribute1=" + attribute1 + ", attribute2=" + attribute2 + "}";
}
toString()의 주요 사용 사례디버깅과 로깅
toString() 메서드는 주로 디버깅과 로그 기록에서 유용하게 사용됩니다. 객체의 상태를 쉽게 확인하고, 코드의 흐름을 파악하는 데 도움을 줍니다.객체의 직관적 표현
toString()을 오버라이딩하면, 객체를 보다 직관적으로 표현할 수 있습니다. 예를 들어, 데이터베이스 레코드나 사용자 정보 등을 출력할 때 객체의 속성을 문자열로 변환하여 더 쉽게 읽을 수 있습니다.컬렉션 출력
ArrayList, HashMap 등)는 내부에 저장된 객체들의 toString() 메서드를 호출하여 출력합니다. 객체의 toString() 메서드를 오버라이딩하면, 컬렉션에 포함된 객체들도 가독성 있게 출력됩니다.@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass myClass = (MyClass) obj;
return Objects.equals(attribute1, myClass.attribute1) &&
Objects.equals(attribute2, myClass.attribute2);
}
equals()를 오버라이드할 때 반드시 hashCode()도 오버라이드해야 합니다.@Override
public int hashCode() {
return Objects.hash(attribute1, attribute2);
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
Class<?> clazz = obj.getClass();
System.out.println("Class name: " + clazz.getName());
wait(): 다른 스레드가 이 객체의 notify() 또는 notifyAll()을 호출할 때까지 현재 스레드를 대기 상태로 만듭니다.notify(): 이 객체의 모니터에 대기 중인 단일 스레드를 깨웁니다.notifyAll(): 이 객체의 모니터에 대기 중인 모든 스레드를 깨웁니다.Object 클래스는 Java 객체 지향 프로그래밍의 근간을 이루는 중요한 클래스입니다. 이 클래스의 메서드들을 잘 이해하고 적절히 오버라이딩하는 것은 효과적인 Java 프로그래밍을 위해 필수적입니다.