接口继承和子接口

时间:2009-11-09 07:23:10

标签: c# inheritance interface

接口IA:接口IB {...}

因此IB是IA的父接口,IA是IB的_____。什么应该放在空白?子接口?

2 个答案:

答案 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的超接口

所有基于这些界面的类实现