当一个接口从另一个接口“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”。