2013-05-04 44 views
-1

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

+3

你自己回答了这个问题...... – jlordo 2013-05-04 13:53:46

+1

把问题写成答案,接受它,你就完成了。 – Maroun 2013-05-04 13:54:10

+0

http://stackoverflow.com/questions/10040069/abstract-class-vs-interface-in-java – 2013-05-04 13:54:57

回答

2

你已经得到了答案。使用接口,我们可以执行多种类型的行为,因为使用类不会为你工作。例如,你可以强制一个类与IComparable以及INumerable一样,但如果你想用类来完成它是不可能的。

0

设计明智的,最好的准则使用Interface你代码的行为/合同/功能定义(见List接口),并使用Abstract类,你必须atlease一些可重复使用(通过继承)方法实现。

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

1

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

是否有任何设计或性能相关的东西?

没有性能差异。

你可能会认为,抽象类(实际上,所有类)的单一继承限制使得这是“设计事物”。当然,它会严重限制你在面向对象设计中使用多态性。

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

相关问题