关于c#:通过接口进行多重继承是如何有用的?

how multiple inheritance via interface is useful?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why is Multiple Inheritance not allowed in Java or C#?

问题:C支持多重继承吗?答:是的,使用界面。

现在我的qusetion:如果我们继承了一个接口,那么我们必须实现它。因此,我们编写自己的代码,然后我们如何使用继承的核心概念,即继承接口的可重用性。所以看来,通过接口进行的多重继承是无用的。如果我错了,那么通过接口的多重继承有多有用?


你混淆了两个不同的概念:

  • 类继承,其中类继承基类的成员和行为。您只能有一个基,C不支持多重继承
  • 接口实现,这是表示类完成的契约的一种方法。您可以实现任意多的接口。

所以,如果您希望通过实现接口来继承行为,那么它当然看起来是无用的…实现一个接口只是告诉其他人"嘿,我知道怎么做(某物)"的一种方式。它不会自动提供"某物"的实现,这部分由您决定。


实现一个接口就是创建一个对象,该对象被保证执行特定的函数和方法的"契约",使它可以被期望实现该接口的对象的任何方法使用。

考虑排序函数的理论davidw.icomparer接口。一般排序可能需要一个支持davidw.icomparer接口的对象,该接口提供两个对象之间的比较。davidw.icomparer的一个实现提供了特定的实现,这些实现定义了正在排序的两个对象在使用者的问题域中的关系。

接口定义了一个契约,实现者提供了文字管道。这就是价值所在。实际上,你不会"继承"一个接口……