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