Object — 클래스 계층의 뿌리
Object — 클래스 계층의 뿌리
Object는 클래스 계층의 뿌리(root) 예요. 모든 클래스는 Object를 슈퍼클래스로 가지며, 배열을 포함한 모든 객체가 이 클래스의 메서드를 구현해요.
본문
자바의 모든 클래스가 Object에서 상속받기 때문에, 이 클래스의 메서드는 사실상 모든 객체가 기본으로 갖는 것들이에요. 그래서 이 메서드들의 의미를 이해하는 게 자바의 기초예요.
생성자
Object()— 새 객체를 생성해요.
주요 메서드
protected Object clone()— 이 객체의 복사본을 만들어 반환해요.boolean equals(Object obj)— 다른 객체가 이 객체와 "동등한지(equal to)" 여부를 나타내요.protected void finalize()— deprecated(제거 예정): finalization은 미래 릴리스에서 제거 대상이에요.final Class<?> getClass()— 이 객체의 런타임 클래스를 반환해요. 반환되는Class객체는 그 클래스가 나타내는 static synchronized 메서드가 잠그는 객체예요. 실제 결과 타입은Class<? extends |X|>인데,|X|는getClass가 호출된 표현식의 static 타입의 소거(erasure)예요. 예를 들어 다음 코드 조각에선 캐스트가 필요 없어요.
Number n = 0;
Class<? extends Number> c = n.getClass();
int hashCode()— 객체를 위한 해시 코드 값을 반환해요.final void notify()— 이 객체의 모니터에서 대기 중인 단일 스레드를 깨워요.final void notifyAll()— 이 객체의 모니터에서 대기 중인 모든 스레드를 깨워요.String toString()— 객체의 문자열 표현을 반환해요.final void wait()— 현재 스레드를, 보통 notify·interrupt로 깨어날 때까지 대기시켜요.final void wait(long timeoutMillis)— 현재 스레드를 깨어나거나 일정 실시간이 경과할 때까지 대기시켜요.final void wait(long timeoutMillis, int nanos)— 현재 스레드를 깨어나거나 일정 실시간이 경과할 때까지 대기시켜요.
equals, hashCode, toString은 자바에서 가장 자주 재정의되는 메서드로, 값 동등성·해시 기반 컬렉션·문자열 표현을 원하는 대로 바꾸는 데 쓰여요.