java는 단일 상속만을 허용한다 ( C++은 다중상속이 가능하다 )
예를 들자면
class 가전제품 extends Tv , TCR{ // 위와같은 표현은 불가능 ( java에서는 )
// ...
}
자바는 단 하나의 조상으로부터만 상속받을 수 있는데요. 이 것을 단일 상속이라고 합니다.
참고로... 자바보다 먼저 나온 객체지향언어 C++에서는 여러 조상으로부터 상속받을 수 있는 다중상속을 허용합니다.
다중상속을 허용하면 여러 클래스로부터 상속받을 수 있기 때문에 더 쉽게 클래스를 정의할 수 있지만...
조상이 많아질 수록... 상속계층도가 너무 복잡해져서... 클래스간의 관계를 관리하기 어려워집니다.
이렇게 되면... 상속의 장점이 사라져 버리죠...
그리고... 서로 다른 조상으로부터 같은 이름의 멤버를 상속받는 경우... 충돌의 문제도 있습니다.
이미 C++에서 경험한 다중상속의 이러한 문제들 때문에... 자바는 단일 상속만을 허용하도록 만들어진 것입니다.
그래서 이 코드와 같이... 가전제품이라는 클래스를 작성할 때...
extends 뒤에 TV와 VCR 두 개의 조상클래스를 지정하면 좋겠지만...
둘 중에 비중이 높은 클래스 하나만을 선택해서 적을 수 있습니다.
여기서는 TV클래스를 상속받도록 하였습니다.
대신... VCR클래스는 멤버변수로 포함시키고... 내부적으로 VCR인스턴스를 사용하면 됩니다.
VCR클래스에 정의된 멤버들을 TVCR클래스에 똑같이 정의하고...
메서드의 경우... 코드를 작성할 필요없이... 포함시킨 VCR인스턴스의 메서드를 호출하기만 하면되겠죠.
이렇게 하면 다중상속에 비해서 코드가 좀 길어지긴 했지만... 그럭저럭 큰 불편없이
처리가 가능합니다.
'Backend > java' 카테고리의 다른 글
오버라이딩(Overriding)이란?? (0) | 2018.08.09 |
---|---|
Object 클래스는 무엇일까 ? (0) | 2018.08.09 |
클래스간의 관계결정하기 ( 상속 Vs 포함 ) (0) | 2018.08.09 |
클래스간의 관계 - 포함관계 (0) | 2018.08.09 |
클래스간의 관계 - 상속관계 ( inheritance ) (0) | 2018.08.09 |
#IT #먹방 #전자기기 #일상
#개발 #일상