当一个界面"继承"另一个界面时,你怎么称呼它?

Jam*_*ran 43 c# oop interface

如果我有B级:A {}

我说"B级继承了 A级"或"B级来自A级".

但是,如果我改为:

  class B : ISomeInterface   {}
Run Code Online (Sandbox Code Playgroud)

说"B继承ISomeInterface"是错误的 - 正确的术语是"B 实现 ISomeInterface".

但是,说我有

  interface ISomeInterface : ISomeOtherInterface   {}
Run Code Online (Sandbox Code Playgroud)

现在,说"继承"仍然是错误的,但现在说"实现"是错误的,因为ISomeInterface没有实现任何东西.

那么,你怎么称呼这种关系?

Jon*_*eet 58

我个人说"扩展",我认为 C#规范在某个地方也使用了这个词(不幸的是我现在找不到它) - 但是我记得Eric Lippert说他并不热衷于此,并希望改变它4.0.

我认为这很好,因为它表明你正在扩展原始界面指定的合同.

编辑:看过3.0规范......

规范类似于第13.2节中的问题.它讨论了从基接口继承的成员.它讨论了一个扩展另一个类的类,但不是接口

编辑:在C#5规范的第13.1.4节中,它使用了继承:

接口可以从零个或多个接口类型继承

所以这可能是最好用的术语.

  • @BryanRayner:现在已经找到了使用继承的C#5规范的相应位. (3认同)

Ale*_*lli 7

我称之为"延伸".


dsi*_*cha 7

通常,我称之为过度工程.

  • INewerVersion扩展了IOlderVersion.COldClass实现IOlderVersion但不实现INewerVersion.CNewClass实现了INewerVersion.过度工程在哪里? (3认同)
  • @Windows程序员:这是一个很好的例外.因此,**通常**过度工程.首先,这有点诙谐.其次,当你有从接口继承的接口时,你至少有三个级别的继承,因为有人也会实现这些接口.那已经开始起步了. (2认同)

use*_*426 6

作为一个权威的来源,如果你需要一个有用的引用,我在MSDN上遇到了描述" 接口继承 "的信息,其中包含ComboBox,Control,Listbox和TextBox的接口继承结构的实际示例:

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

接口可以从零个或多个接口继承,这些接口称为接口显式基接口.

例:

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

资源:

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