본문으로 바로가기

이런말을 많이들 들어봤을 것이다. Object클래스는 모든 클래스들의 최상위 클래스로서 모든 클래스는 Object클래스를 상속받는다.

간단하게 사실만을 요약하여 잘 정리한 문장이다. 하지만 가슴에 팍 와닿지는 않는다. 그러면 이제 가슴에 와닿도록 설명하겠다.

 

모든 클래스는 Object클래스를 상속받는다. 그렇다면 다른 클래스를 상속받으면 어떻게될까?

클래스가 extends를 이용해 다른 클래스를 상속받으면 해당 클래스는 Object클래스를 상속받지 않는다.

왜냐하면 Java는 다중상속을 허용하지 않기 때문이다.

(default 생성자같은 느낌이다. 생성자를 명시적으로 선언하지 않으면 디폴트 생성자를 기본적으로 제공하지만 개발자가 명시적으로 생성자를 생성하게 되면 디폴트 생성자는 자동 생성되지 않는다.)

그런데도 다른 클래스를 상속받음 으로서 다중상속 불가라는 특성에 의해 Object클래스를 상속받지 않게된 해당 클래스에서  우리가 Object클래스의 메소드를 사용할 수 있는 이유는 무엇일까?

extends를 이용해 상속받은 클래스조차 상속트리를 타고 상위로 올라가다 보면 결국은 Object클래스를 상속받기 때문이다.

즉, Object를 상속받는 클래스를 상속받는 것이다.

 

"모든 클래스는 Object 클래스를 상속받는다." 라는 말보다는 "모든 클래스의 최상위 클래스는 Object클래스다." 라는 말이 좀더 머리에 그림이 잘 그려지는 것같다.