【发布时间】:2012-03-20 16:56:04
【问题描述】:
C# 和 Java 都支持从多个父级继承的接口:
public interface IMyInterface : IInterface1, IInterface2
public interface MyInterface
extends Interface1, Interface2
我一直在 .NET Framework 和 JavaAPI 文档中查找使用多接口继承的示例。
在 JavaAPI 中,我找到了扩展超级接口和一个或多个“标记”接口的子接口示例(即它们没有定义的方法)。所以“标记”接口并没有真正在实现上强制执行任何东西。我可以看到这样做的好处,尤其是在引入注释之前。
在 .NET 中,我发现接口继承自多个已经相关的父级。例如IList 继承自ICollection 和IEnumerable 但ICollection 已经是IEnumerable 的后代。因此,在实现上强制执行 IEnumerable 已经通过单继承完成。
在任何一种情况下,多接口继承看起来要么是多余的,要么可以被更好的替代方案取代。
如果没有多重接口继承,有没有什么例子很难或不可能完成?
【问题讨论】:
-
MySepcialInterface应该是Cloneable和Comparable? -
嗯,是的,但我一直在寻找一个真正的理由来扩展两个不相关的接口。正如我在上面提到的,我发现的 Java 示例是“标记”,而我发现的 .NET 示例已经通过单继承来实施。
-
如果没有多重接口继承,任何设计都不可能实现,甚至难以实现。这种做法只是促进了关注点的解耦和分离,这当然不是强制性的(只是让它更干净)
标签: c# java interface multiple-inheritance