关于java:为什么我们可以使用接口而我们可以使所有方法都抽象化?

Why to use interface while we can make all methods abstract?

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

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


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


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

Is there any design or performance related thing involved??

没有性能差异。

您可能会认为抽象类(实际上,所有类)的单一继承限制使这成为一个"设计的东西"。当然,它会严重限制在OO设计中使用多态性。

(你也可以说,当你没有接口的时候,你不能遵循"编程到接口"的原则。然而,这是一个薄弱的论点…术语上的诡辩。)


在设计方面,最好使用Interface作为代码行为/契约/功能定义(参见List接口)和使用Abstract类,其中您至少有一些可重用(通过继承)方法实现。

虽然可以使用所有的Abstract方法,但在这种情况下,最好使用Interface方法。