2010-02-18 2 views
0

아무도 설명 할 수 있습니까다중 상속에 관하여

왜 C#은 다중 상속을 지원하기 때문에 다중 상속을 지원하지 않습니까? 어떻게 가능할까요? C++은 어떻게 지원합니까?

+0

다중 상속이 더러 웠기 때문에 http://en.wikipedia.org/wiki/Multiple_inheritance#Criticisms – Jay

+2

C#에서 찾고있는 다중 상속 기능을 설명하고 달성 할 수있는 다른 것을 추천 할 수 있습니까? 너의 목표? – Dan

+5

10 개의 질문이 0 개가 허용됩니까? 질문에 대한 최선의 대답을 얻었을 때, 그것을 당신이 받아 들인 대답으로 선택하는 것이 정중 할 것입니다. 그것은 당신의 질문을 읽고 답장 할 시간을 갖는 사람들에게 "고맙습니다"라고 말하는 좋은 방법입니다. –

답변

3

먼저 작은 수정 : C#은 복수 인터페이스 상속을 지원합니다. 구현 상속을 지원하지 않습니다.

은 MI가 지원되지 않는 두 가지 큰 이유는 다음과 같습니다

  • 기회는 당신이 어쨌든 여러 인터페이스 상속 원하는 것을 할 수 있다는 좋다.

  • 컴파일러 구현에 많은 복잡성이 추가됩니다.

은 IMO, 많은 경우에, 기능 언어 원인에 다중 상속의 가용성 자주 악용 될 수 있습니다. 단일 상속은 컴포지션과 같은 것이 무언가를 할 때 이미 불필요하게 많은 클래스 계층 구조에 쐐기가 붙어 있습니다.

+0

"상속은 과용되었습니다." C# 클래스는 기본적으로'sealed' 될 것이고,'base'를 통해 상속을 명시 적으로 가능하게해야 할 것입니다. –

관련 문제