Object 클래스는 JDK에서 제공하는 클래스로, 사용 빈도가 높지는 않지만 자바를 통틀어 가장 중요한 클래스이다.
눈으로는 보이지 않는 경우가 많은데, 우리가 사용하는 것에 밀접하게 관계되어 있는 경우가 많으며, 모든 클래스의 근원(최상위 클래스)이 된다고 해서 루트 클래스(Root Class)라고 부른다.
💡Object 클래스 (Root Class)
Class Object is the root of the class hierarchy.Every class has Object as a superclass.
All objects,including arrays, implement the methods of this class.
// class TestParent
class TestParent extends Object {
public int a;
public int b;
}
class TestChild extends TestParent {
public int c;
public int d;
}
개발자가 만드는 모든 클래스는 명시적으로 상속을 구현하지 않으면 자동으로 Object 클래스의 자식 클래스가 된다. 이는 부모 클래스가 보이지는 않아도 extends Object가 되어 있는 상태임을 의미한다.
💡Object 클래스 9개 메소드
모든 클래스들에게 공통으로 필요하다고 생각되는 기능이 구현되어 있다.
equals(Object obj)
객체의 내용이 다른 객체와 동일한지 비교한다.
getClass()
객체의 클래스를 나타내는 Class 객체를 반환한다.
hashCode()
객체의 해시 코드를 반환한다.
notify()
객체의 모니터링 락을 소유하고 있는 스레드에게 다른 스레드가 해당 객체의 상태가 변경되었음을 공지한다.
notifyAll()
객체의 모니터링 락을 소유하고 있는 모든 스레드에게 다른 스레드가 해당 객체의 상태가 변경되었음을 공지한다.
toString()
객체를 문자열로 표현하는데 사용되며, 기본 구현은 클래스 이름과 해시 코드를 반환한다.
wait()
스레드를 일시적으로 중지시키고, 다른 스레드가 해당 객체의 모니터링 락을 획득할 때까지 대기한다.