[기본 개념] 2 | (1.3) 단일상속, Object 클래스

728x90

[기본 개념] 2 | (1.3) 단일상속, Object 클래스

1 상속의 정의와 장점

2 클래스간의 관계 - 포함관계

3 클래스간의 관계 결정하기

4> 단일상속(single inheritance)

5> Object클래스 - 모든 클래스의 조상

4 단일상속(single inheritance)

자바에서는 오직 단일 상속만을 허용한다. 그래서 둘 이상의 클래스로부터 상속 받을 수 없다.

 

 다중상속을 허용하면 여러 클래스로부터 상속받을 수 있기 때문에 복합적인 기능을 가진 클래스를 쉽게 작성 할 수 있다는 장점이 있지만, 클래스간의 관계가 매우 복잡해진다는 것과 상속받은 멤버간의 이름이 같은 경우 구별할 수 있는 방법이 없다는 단점을 가지고 있다.

 

 만일 다중상속을 허용해서 TVCR클래스가 TV클래스와 VCR클래스를 모두 조상으로 하여 두 클래스의 멤버들을 상속받는다고 가정해보자. 

 

 TV클래스에도 power( )라는 메서드가 있고, VCR클래스에도 power( )라는 메서드가 있을 때 자손인 TVCR클래스는 어느 조상클래스의 power( )를 상속받게 되는 것일까? 

 

 이것을 해결하는 방법은 조상 클래스의 메서드의 이름이나 매개변수를 바꾸는 방법 밖에 없다. 이러면 그 조상 클래스의 power( )메서드를 사용하는 모든 클래스들도 변경을 해야 하므로 그리 간단한 문제가 아니다.

 

이 때문에 자바에서는 다중상속의 장점을 포기하고 단일상속만을 허용한다.

 

단일 상속은 클래스 간의 관계가 보다 명확해지고 코드를 더욱 신뢰할 수 있게 만들어 준다.

5. Object클래스 - 모든 클래스의 조상

 Object클래스는 모든 클래스의 최상위에 있는 조상클래스이다. 모든 클래스들은 자동적으로 Object클래스로부터 상속받게 한다.

 

만일 다음과 같이 다른 클래스로부터 상속을 받지 않는 TV클래스를 정의하였다고 하자.

 

        class Tv {

            . . .

        }

 

 위의 코드를 컴파일 하면 컴파일러는 위의 코드를 다음과 같이 자동적으로 'extends Object'를 추가하여 Tv클래스가 Object클래스로부터 상속받도록 한다.

 

        class Tv extends Object {

            . . .

        }

 

 이처럼 조상클래스의 조상클래스를 찾아 올라가다 보면 결국 마지막 최상위 조상은 Object클래스일 것이다.

 

 

 

 

출처 | Java의 정석 (남궁 성)

 

728x90