接口IA:接口IB {...}
因此IB是IA的父接口,IA是IB的_____。什么应该放在空白?子接口?
答案 0 :(得分:3)
.NET接口之间没有继承关系。如果您使用反思,这很明显 - typeof(IB).BaseType
将是null
,而不是IB
。
就个人而言,我更愿意将接口视为合同。在这种情况下,接口的“继承”实际上只是加强了合同 - 所以我说“合同IB
暗示IA
”。 Eric Lippert seems to share这个观点:
他认为扩展是关于实现的重用,而指定一个“基础”接口就是说“任何履行这个合同的对象也必须满足这个其他接口”。
或者,“IA
扩展IB
”听起来是可以理解的,虽然技术上是正确的(如果我们谈论延长合同),虽然可能有些误导,因为我们正在收紧合同“扩展“界面,而不是放松它。
另一种方法是使用C#语言规范使用的内容。那个有关于标题为“基础接口”的主题的部分,并从以下句子开始:
接口可以从零个或多个接口类型继承,这些接口类型称为接口的显式基接口。
所以你有它。虽然应该注意这是C#3.0;过去版本的规范实际上使用“扩展”而不是“继承”来描述相同的东西,因此仍有一些混淆的可能性。
答案 1 :(得分:0)
据说IA是IB的子接口,IA 扩展 IB。
因此,IB是IA的超接口。
所有基于这些界面的类实现。