본문 바로가기
[Developer]/Concept

죽음의 다이아몬드(the Deadly Diamond of Death; DDD)

by 반가운 해피빈이 2009. 11. 5.

다중상속이라는 개념이 있다.

그 개념은 참 편리해보이지만, 때로는 아주 위험할 수 있다는 것을 나타내는 용어가
바로 죽음의 다이아몬드이다.(참 용어가 거시기허네;;)


위의 그림처럼 ComboDrive가 상속을 받는게 가능하다라고 했을때,
ComboDrive에서 burn()메소드를 호출하면 어떤 메소드가 실행이 될지 "애매한"상황이 발생하게 된다.

또한 i를 ComboDrive에서 사용하자면, 어디에서 상속되어 온 것을 사용할 지도 의문인 것이다.

고로, 이것을 새로 정의하자니 익혀야 할 게 많아지고,
그냥 단순하게 아얘 허락하지 않으면 문제가 발생하지 않으니, 자바에서는 다중상속(Multi inheritance)를 허락하지 않게 된 것이다.

이것이 다이아몬드 형태를 띠게 되어 The Deadly Diamond of Death라고 부르게 된 것이란다.

물론 그것에 대비하여 interface가 있으니 잘 활용하면 되는 것이다.

댓글0