당신은 무엇을 호출할 때는 하나의 인터페이스"상속에서"또 다른?

StackOverflow https://stackoverflow.com/questions/807217

  •  03-07-2019
  •  | 
  •  

문제

가 있는 경우 B 클래스:A{}

나이 말하는"종류 B 상속 클래스 A"or"B 클래스에서 파생되는 클래스".

까지,남녀노소 누구나 좋아합니다 대신:

  class B : ISomeInterface   {}

그것의 잘못을 말하는"B 상속 ISomeInterface"--적절한 용어"라고 말하는 것 B 를 구현하는 ISomeInterface".

하지만,가

  interface ISomeInterface : ISomeOtherInterface   {}

지금,그것은 여전히 잘못을 말하는"inherits",그러나 그것은 지금으로 말을 잘못"구현하기 때문에"ISomeInterface 구현하지 않는다.

그래서,당신은 무엇을 호출하는 관계는?

도움이 되었습니까?

해결책

나 개인적으로 말하는"것이다:"나는 생각이 C#spec 사용하는 단어뿐만 아니라 어딘가(나는 그것을 찾을 수 없습니다 불행히도 현재)-하지만 난 기억 에릭 프라 말하지 않았다에 치열하고 싶다 그것을 변경하는 대한 4.0.

좋은 생각을 보여주기 때문에 당신이 확장하는 계약에 의해 지정된 원본 인터페이스입니다.

편집:을 보 3.0spec...

사양의 일종 측 단계에서 문제 섹션 13.2.그것은 회담에 대해 멤버로부터 상속되는 기본 인터페이스가 있습니다.그것은 회담에 대 한 클래스 확장,또 다른 하지만 인터페이스

편집:C#5 사양,절 13.1.4 사용,상속받:

인터페이스를 상속받을 수 있습 제로에서나 이상의 인터페이스 유형

그래서 아마 최고의 기간 사용합니다.

다른 팁

저는 이것을"장".

일반적으로,나는 그것을 overengineering.

신뢰할 수 있는 소스 과해야 하는 경우에 도움이 되는 따옴표를 건너 왔어 에 대한 정보 MSDN 는 설명합니다"인터페이스를 상속"으로 실질적인 예의 인터페이스를 상속의 구조 콤보 상자,제어,Listbox 및 TextBox:

으로 언급의 명시적인 기본 인터페이스

인터페이스를 상속받을 수 있습에서나 이상의 인터페이스, 는 불 명시적 기본 인터페이스 의 인터페이스입니다.

예제:

interface IControl
{
   void Paint();
}
interface ITextBox: IControl
{
   void SetText(string text);
}
interface IListBox: IControl
{
   void SetItems(string[] items);
}
interface IComboBox: ITextBox, IListBox {}

출처:

http://msdn.microsoft.com/en-us/library/aa664578%28VS.71%29.aspx

왜 그것은 잘못된 것을 말 InterfaceB"상속받는다"또는"에서 파생되"InterfaceA?"구현하는"잘못된 것이기 때문에,InterfaceB 구현을 제공하지 않.의미,파생된 인터페이스는 매우 비슷한 파생됩니다.C++,예를 들어,를 구별하지 않는다 사이의 인터페이스 클래스고에서 모두.

당신이 정의 잘못입니다.

B:수단"B 에서 상속되".

우리가 말할 때"B 를 구현하 InterfaceA",는 일반적으로 의미 InterfaceA 있지 않은 정의하는 기능의 프로토타입(또는,순수한 C++).그러나는 C++에서 가장 OOPL 다,상속받아 구현 주가 동일한 구문입니다.

그래서,InterfaceB:InterfaceA 여전히 뜻은"InterfaceB 상속 InterfaceA".

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top