-1

在抽象类中,我们可以将所有方法抽象化,这样它就可以像接口一样工作,那么为什么要使用接口呢?我能想到的原因之一是我们可以实现多个接口而不是扩展多个类。是否涉及任何设计或性能相关的事情?

4

3 回答 3

2

你已经得到了答案。使用接口,我们可以强制执行多种类型的行为,因为使用类对您不起作用。例如,您可以强制一个类为 IComparable 和 INumerable,但是如果您想对类执行此操作是不可能的。

于 2013-05-04T13:55:23.230 回答
1

您已经确定了接口允许抽象类不允许的一件事。一个类不能扩展多个抽象类。

是否涉及任何设计或性能相关的事情?

没有性能差异。

您可能会争辩说,抽象类(实际上是所有类)的单一继承限制使其成为“设计事物”。当然,它会严重限制您在 OO 设计中使用多态性。

(你也可以争辩说,当你没有接口时,你不能遵循“为接口编程”的格言。然而,这是一个弱论点……一个术语上的狡辩。)

于 2013-05-04T14:10:37.397 回答
0

设计方面,它是Interface为您使用代码行为/合同/功能定义(请参阅List接口)并使用Abstract您拥有一些可重用(通过继承)方法实现的类的首选指南。

尽管拥有所有abstract方法是可能的,但在这种情况下,Interface首选方法。

于 2013-05-04T14:03:13.400 回答