描述接口之间的关系

时间:2011-03-25 02:34:32

标签: c# .net interface multiple-inheritance

在FCL中考虑这个界面:

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

它告诉我们:界面IList<T> [XXX] 3个界面:IConnection<T>IEnumerable<T>IEnumerable。我有[XXX]的一些选择:

(1)派生自/ inherits

此选项来自C#语言规范(但不是直接),其中多次出现“多继承接口”一词。我不喜欢它的原因:使用“继承”一词,我们有:IEnumerable<T>继承IEnumerableICollection<T>继承IEnumerable<T>IEnumerable,然后IList<T>继承了所有这三个。有些事情是错的,但我不能说,感情非常糟糕。

(2)实现

这也不是一个好选择。因为没有实施,所以只是合同。

(3)别的什么?我想知道

你的想法是什么?

3 个答案:

答案 0 :(得分:3)

我为此使用了“Extends”。可能是一个小Java-ish但它似乎适合我。具有超级接口的接口可以合理地说是“扩展”该接口,因为它必须添加一些东西(不一定或当然,但没有太多理由不这样做。除了语义原因,但是你呢'仍然在语义上扩展

答案 1 :(得分:2)

我要说IList<T> 包含 ICollection<T>IEnumerable<T>IEnumerable

或者,我可能会说 延伸

答案 2 :(得分:0)

我说实现接口并且继承了类。这就是你问的问题吗?

如果是,这就是原因:

  • 界面描述了一个合同,使用该合同的对象必须实施。如果一个接口基于另一个接口,我会说它“扩展”或“派生自”该接口。如果它是一个类,那么它实现了接口。
  • 一个类公开了其他对象的功能,以继承并扩展。

我不使用“inherits”的原因确实描述了两种情况,因为你没有从接口继承任何东西,例如:界面没有功能性物质 - 只是具体物体将要做的蓝图。