2010-06-18 5 views

답변

7

리터럴 의미에서 다중 상속을 지원하지 않는다. 은 다형성을 제공하는 다중 인터페이스를 구현할 수 있으므로 다중 상속의 이점을 얻을 수 있습니다. 그러나 기본 동작을 얻지는 못합니다.

기본 동작이 필요한 경우 기본 전략은 기본 클래스가 인터페이스를 구현하고 필요한 경우이 구현을 재정의하기위한 파생 클래스입니다.

나는 아직 다중 상속의 필요성에 부딪혀 왔지만, 나는 C#이 부족하다고 생각하지 않는다. 대표 이상

+2

나는 이것을 추가하려했으나 대답은 끝났다. 다중 상속은 C#에서 지원되지 않습니다. 인터페이스는 기본 동작을 정의하지 않으므로 그러나 여러 계약 (인터페이스)을 상속 할 수 있습니다. –

+1

여러 개체 상속은 CLR에서도 지원되지 않습니다. 다중 상속이 좋을 장소를 보았습니다 ...하지만 다른 사람들이 쉽게 유지할 수있는 객체를 만들도록 강요합니다. –

+1

내가 이것에 물리는 유일한 시간은 형식이 MarshalByRefObject를 확장하지 않는 경우입니다. – Will

0

구현 (IOD)는 C#에서 개발자 빠른 시스템 인터페이스의 구현 및 다중 상속 수있는 아주 간단한 코딩 기술이다 (내가 아는 : 그것은 : 지원되지 않음) 그럼

전체적인 아이디어는 기본적으로 원하는 유형의 클래스 필드가 있고 멤버 필드에 숨겨진 호출을 기반으로 클래스의 공개 속성을 노출하는 것입니다.

그래서 클래스 A와 클래스 B와 같은 클래스가있는 경우 클래스 C의 부모 그 상황의 예는 우리가 처리 할 수 ​​있어야하고 알 수있는 사용자 컨트롤을 가질 때의 경우 일 수 있습니다. 고객의

사용자 정의 컨트롤과 List는 C#의 경우 다중 상속을 지원하지 않기 때문에 상속을 통해 직접 할 수는 없으므로 다중 상속이 제대로 사용되지 않을 때 클래스 패턴 방지 패턴으로 이어짐)

0

언어 디자이너는 C#에서 다중 상속을 허용하지 않기로 결정했습니다. 그것은 discussed before되었습니다.

1

객체 지향 언어의 이론에서 C#/Java/등의 상속에 대해 이야기 할 때 종종 혼합되는 두 가지 개념이 있습니다. 하위 유형

는 하나의 클래스가로 캐스트 (또는으로 간주) 할 수있는 방법 몇 가지 다른 간단한 유형 (라고 슈퍼)에 기록 될 수 있다는 것을 의미한다. C# 용어에서는 부모 클래스 또는 인터페이스가 필요한 메서드에 개체를 전달할 수 있음을 의미합니다. C#의 객체에는 명확하게 여러 수퍼 유형이 있습니다 (부모 + 원하는만큼의 인터페이스)

하위 클래스은 유형이 다른 유형의 구현을 상속한다는 것을 의미합니다. C#에서는 부모 클래스가있을 때 발생하지만 인터페이스를 구현할 때는 발생하지 않습니다 (인터페이스에서 구현을 상속하지 않기 때문에). 따라서 C#에서는 단일 수퍼 클래스 (= 부모 클래스) 만 가질 수 있습니다.

관련 문제