当一个接口从另一个接口“inheritance”时,你称之为什么?

如果我有Bclass:A {}

我说“B类inheritance了 A类”或“B类来自A类”。

但是,如果我有:

class B : ISomeInterface {} 

说“BinheritanceISomeInterface”是错误的 – 正确的说法是说“B 实现 ISomeInterface”。

但是,说我有

  interface ISomeInterface : ISomeOtherInterface {} 

现在说“inherits”仍然是错误的,但是由于ISomeInterface没有实现任何东西,现在说“实现”也是错误的。

那么,你称之为什么关系?

我个人认为“扩展”,我认为 C#规范也使用这个词(不幸的是,现在我不能find它) – 但是我记得Eric Lippert说他并不热衷于此,并且想改变它4.0。

我认为这很好,因为它表明您正在扩展原始界面指定的合约。

编辑:已经看了3.0规范…

规范在13.2节中列举了这个问题。 它讲述了从基本接口inheritance的成员。 它谈到一个扩展另一个 ,但不是接口

编辑:在C#5规范,13.1.4节,它使用inheritance:

一个接口可以从零个或多个接口typesinheritance

所以这可能是最好的术语。

我称之为“扩展”。

通常我称之为过度工程。

作为一个权威的来源 ,如果你需要一个有用的报价,我遇到了MSDN的信息 ,描述了“ 接口inheritance ”与ComboBox,控件,列表框和文本框的接口inheritance结构的一个实际的例子:

并提到一个明确的基础接口

一个接口可以从零个或多个接口inheritance ,这个接口被称为接口显式基接口。

例:

 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“inheritance”或“从InterfaceA派生”是错误的? “实现”将是错误的,因为InterfaceB不提供一个实现。 从语义上讲,派生类与派生类非常相似。 例如,C ++根本不能区分接口和类。

你定义错了。

B:A表示“B从Ainheritance”。

当我们说“B实现了InterfaceA”的时候,通常意味着InterfaceA没有定义的function – 它只是原型(或者,在C ++中是PURE)。 但是在C ++和大多数OOPL中,inheritance和实现共享相同的语法。

因此,InterfaceB:InterfaceA仍然意味着“InterfaceBinheritance了InterfaceA”。