Car*_*Liu 2 c# inheritance interface
接口 IA : 接口 IB { ... }
所以IB是IA的父接口,IA是IB的_____。空白处应该填什么?子接口?
.NET接口之间没有继承关系。typeof(IB).BaseType
如果您使用 Reflection- will be null
,则这一点很明显IB
。
就我个人而言,我更喜欢将接口视为契约。在这种情况下,接口的“继承”实际上只是加强了契约 - 所以我会说“契约IB
意味着IA
”。埃里克·利珀特 (Eric Lippert)似乎也同意这一观点:
他认为扩展是关于实现的重用,而指定“基本”接口是说“任何满足此契约的对象也必须满足此其他接口”。
另外,“ IA
extends IB
”听起来可以理解,同时在技术上是正确的(如果我们谈论的是扩展合同),尽管可能有些误导,因为我们在“扩展”界面中收紧合同,而不是放松它。
另一种方法是遵循 C# 语言规范所使用的内容。其中有一个关于标题为“基本接口”的主题的部分,并以以下句子开头:
接口可以继承零个或多个接口类型,这些接口类型称为接口的显式基接口。
所以你有它。尽管应该注意的是,这是针对 C# 3.0 的;过去版本的规范实际上使用“扩展”而不是“继承”来描述相同的事物,因此仍然存在一些混淆的可能性。