Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过接口的多重继承如何有用?_C#_Oop - Fatal编程技术网

C# 通过接口的多重继承如何有用?

C# 通过接口的多重继承如何有用?,c#,oop,C#,Oop,可能重复: 问题:C#支持多重继承吗?回答:是的,使用接口 现在我的问题是:如果我们继承了一个接口,那么我们必须实现它。因此,我们正在编写自己的代码,然后我们如何使用继承的核心概念,即通过继承接口的可重用性。因此,通过接口的多重继承似乎是无用的。如果我错了,那么通过接口的多重继承有什么用处呢?实现接口就是创建一个对象,该对象保证按照特定的函数和方法“契约”执行,使它可以被任何期望实现该接口的对象的方法使用 考虑排序函数的理论DavidW.IComparer接口。泛型排序可能需要一个支持Davi

可能重复:

问题:C#支持多重继承吗?

回答:是的,使用接口


现在我的问题是:如果我们继承了一个接口,那么我们必须实现它。因此,我们正在编写自己的代码,然后我们如何使用继承的核心概念,即通过继承接口的可重用性。

因此,通过接口的多重继承似乎是无用的。如果我错了,那么通过接口的多重继承有什么用处呢?

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

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


接口定义合同,实现者提供文字管道。这就是价值所在。而且,实际上,您不会“继承”一个接口….

实现一个接口就是创建一个对象,该对象保证按照特定的函数和方法“契约”执行,使其可由任何期望实现该接口的对象的方法使用

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


接口定义合同,实现者提供文字管道。这就是价值所在。而且,实际上,您并没有“继承”接口….

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

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

所以,如果您希望通过实现接口来继承行为,那么它显然是无用的。。。实现一个接口只是告诉别人“嘿,我知道怎么做(某事)”的一种方式。它不会自动提供“某物”的实现,这一部分取决于您。

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

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


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

实现多个接口不是多重继承。所以不,C#不支持多重继承。您不继承接口,而是实现它。您的问题与实现多个接口有什么关系?看来你的问题首先是关于实现接口(即使只是一个)的目的,而不是具体实现其中的几个。@Thomaslevsque我的问题很简单,使用接口的多重继承如何有用?@Rasa,它没有用,因为它不存在。。。实现多个接口与多重继承无关。@ThomasLevesque-接口通常被描述为多重继承的“轻量级”形式。当然不是这样,但它满足了一些要求,最明显的是替代原则。实现多个接口不是多重继承。所以不,C#不支持多重继承。您不继承接口,而是实现它。您的问题与实现多个接口有什么关系?看来你的问题首先是关于实现接口(即使只是一个)的目的,而不是具体实现其中的几个。@Thomaslevsque我的问题很简单,使用接口的多重继承如何有用?@Rasa,它没有用,因为它不存在。。。实现多个接口与多重继承无关。@ThomasLevesque-接口通常被描述为多重继承的“轻量级”形式。当然不是这样,但它满足了一些要求,最明显的是替代原则。
IComparer
不是理论性的。使用
IComparable
@nneonneo:本答案中提到的
icomparaler
接口是理论性的。在讨论中的示例上下文中是理论性的。拜托,我知道,但他所指的界面确实存在。不,我没有因此而否决他。所以,如果我说,比如说,“IComparerizer”,我也不会否决他。
IComparer
不是理论性的。使用
IComparable
@nneonneo:本答案中提到的
icomparaler
接口是理论性的。在讨论中的示例上下文中是理论性的。拜托,我知道,但他所指的界面确实存在。不,我没有因此而否决他。所以,如果我说,比如说,“我的比较者”,也不会否决他。谢谢你澄清了我的误解