모든 클래스가 Object 클래스를 상속 받는 이유는
공통 기능 제공 과 다형성의 기본 구현 을 하기 위해서이다.
객체의 정보를 제공하고, 이 객체가 다른 객체와 같은지 비교하고, 객체가 어떤 클래스로 만들어졌는지 확인하는 기능은 모든 객체에게 필요한 기본 기능이다. 이런 기능을 객체를 만들 때마다 항상 새로운 메서드를 정의해서 만들어야 한다면 상당히 번거로울 것이다.
그리고 막상 만든다고 해도 개발자마다 각각 다르게 만들어서 일관성이 없을 것이다.
Object는 모든 객체에 필요한 공통 기능을 제공한다. Object는 최상위 부모 클래스이기 때문에 모든 객체는 공통 기능을 편리하게 상속 받을 수 있는 것이다.
Object가 제공하는 기능은 다음과 같다.
Object 클래스가 최상위 부모클래스가 됨으로써 프로그래밍이 단순화되고, 일관성을 가진다.
부모는 자식을 담을 수 있다. Object는 모든 클래스의 부모 클래스이다. 따라서 모든 객체를 참조할 수 있다. 모든 자바 객체는 Object 타입으로 처리될 수 있으며, 이는 다양한 타입의 객체를 통합적으로 처리할 수 있게 해준다.
정리
수많은 객체들이 공통적으로 가져야할 기능들이 필요했다. 객체의 클래스 정보를 가져오거나 객체를 비교하거나 등 공통적으로 가져야할 기능들이 필요했고 이를 해결하기 위해 Object클래스가 모든 객체들이 가져야할 기능들을 묵시적으로 가지도록 지정 되었다. 또한 Object가 최상위 클래스가 됨으로써 모든 객체를 담을 수 있게 해주는 기능을 갖추게 된 것이다.