자바가 기본으로 제공하는 라이브러리(패키지) 중에 가장 기본이 되는 것이 바로 java.lang 패키지이다. (여기서 lang == language)
쉽게 이야기해서 자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지를 뜻한다.
여러 패키지 중 Object의 기능 중 하나는 모든 자바 객체의 부모 클래스이다.
먼 말이냐면, 부모를 상속 받지 않은 객체는 Object 클래스를 상속 받는다.
class Ex {}
가 사실은
class Ex extends Object {}
였던 것이다.
Object 클래스는 외부 패키지에 있어서 import도 써야한다.
하지만 java.lang 안에 있는 패키지는 자바에서 자동으로 임포트 된다.
즉, extends Object가 생략 된 것 처럼 import java.lang.Object 도 생략이 가능하다.
**참고로 System.out.println()도 System이라는 클래스에서 import 해오는 거였다. System이라는 클래스도 java.lang 안의 클래스이므로 import가 생략되었던 것.
위에서 언급했든 Object 클래스는 상속받지 않은 모든 객체의 부모 클래스이다.
class Parent {}
class Child extends Parent {}
두개의 객체가 있다.
Child 클래스는 Parent 클래스를 상속한다.
Parent 클래스는 상속하는 클래스가 없다.
Parent는 상속하는 클래스가 없는 객체 이기 때문에 Object 클래스를 상속하며 extends Object 가 생략되어있다.
결국, Child -> Parent -> Object 가 된다.
그러므로 Object는 최상위 부모 클래스이다.
하지만 상속 받는 부모 클래스를 Child와 같이 지정하면 Object 클래스를 상속 받지 않는다.