BackEnd/Java

Diamond of Death 현상 (다중 상속의 문제점)

yhtragramming 2019. 5. 14. 12:51

안녕하세요!

 

오늘 포스팅 할 내용은 'Diamond of Death 현상'입니다.

 

사실 본론부터 이야기하자면, Java에서는 일어날 수 없는 현상입니다.

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

 

여기서 다중 상속이란,

여러 개의 서브 클래스가 하나의 동일한 슈퍼 클래스를 상속받는 것을 의미하는데요.

 

하나의 클래스의 활용도를 엄청 높일 수 있을 것만 같은데, Java는 왜 C++로부터 물려받지 않았을까요?

 

그 이유를 지금부터 풀어갑니다.


* Diamond of Death (데스 다이아몬드 현상)

* B와 C클래스는 A라는 부모 클래스를 상속 받은 자식 클래스이다.

* 그런데 D라는 클래스는 B와 C클래스를 동시에 상속받았다.

* 결국 D는 B와 C클래스를 상속 받기는 했지만, A클래스를 두 번이나 상속 받는 일이 발생해버렸다.

 

이것이 바로 'Diamond of Death 현상'입니다.

Diamond of Death 현상은 다재다능한 하나의 클래스를 여러 클래스가 상속을 받았는데, 그

여러 클래스를 동시에 상속 받은 서브 클래스가 생길 때 발생합니다.

 

C++에서는 위와 같이 다중 상속이 허용되어, Diamond of Death 현상이 종종 발생했습니다.

이렇게 되면 클래스들의 상속 관계가 모호해지게 되어 종종 에러가 발생했는데요.

이러한 모호성을 없애고자 Java가 물려받지 않았다고 합니다.

 

Java에서 구현 결과 역시 칼 같이 ERROR가 발생합니다.

 

 


지금까지 Java에서 다중 상속을 허용하지 않는 이유를

'Diamond of Death 현상'을 중심으로 알아보았습니다.

 

사족이니 간단히 읽고 넘어 가주시면 감사하겠습니다!

 

다음 포스팅에서 뵙겠습니다.