为什么在我们可以使所有方法抽象的同时使用接口?

时间:2013-05-04 13:53:01

标签: java

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

3 个答案:

答案 0 :(得分:2)

你已经得到了答案。使用接口我们可以强制执行多种类型的行为,因为使用类不适合您。例如,您可以将类强制为IComparable以及INumerable,但是如果您想要使用类来实现它是不可能的。

答案 1 :(得分:1)

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

  

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

没有性能差异。

你可能会争辩说抽象类(事实上,所有类)的单一继承限制使得这个“设计事物”。当然,它会严重限制你在OO设计中使用多态。

(你也可以争辩说,当你没有接口时,你不能遵循“编程到界面”的格言。但是,这是一个弱论点......一个术语狡辩。)

答案 2 :(得分:0)

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

虽然可以使用所有abstract方法,但在这种情况下,首选Interface