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

时间:2009-04-30 14:33:07

标签: c# oop interface

如果我有       B级:A {}

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

但是,如果我改为:

  class B : ISomeInterface   {}

说“B继承ISomeInterface”是错误的 - 正确的术语是说“B 实现 ISomeInterface”。

但是,说我有

  interface ISomeInterface : ISomeOtherInterface   {}

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

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

6 个答案:

答案 0 :(得分:58)

我个人说“延伸”而我思考 C#规范在某个地方也使用了这个词(不幸的是我现在找不到它) - 但我记得Eric Lippert说他不是热衷于此,并希望将其改为4.0。

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

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

该规范在第13.2节中逐步解决了这个问题。它讨论了从基接口继承的成员。它讨论了一个扩展另一个,但不是接口

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

  

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

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

答案 1 :(得分:7)

我称之为“延伸”。

答案 2 :(得分:7)

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

答案 3 :(得分:6)

作为权威来源,如果您需要有用的报价,我遇到了info on 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 {}

来源:

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

答案 4 :(得分:2)

为什么说InterfaceB“继承”或“派生自”InterfaceA会是错误的? “实现”是错误的,因为InterfaceB不提供实现。从语义上讲,派生接口与派生类非常相似。 例如,C ++根本不区分接口和类。

答案 5 :(得分:1)

你的定义错了。

B:A表示“B继承自A”。

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

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