Difference between Interface And Abstract Class
本问题已经有最佳答案,请猛点这里访问。
为什么我们在已经给出抽象类的情况下使用接口?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | interface A { void show(); } class TestA implements A { public void show(){} } abstract class B { abstract void show(); } class TestB extends B { public void show(){} } |
接口和抽象类在接口描述行为方面是不同的,而抽象类定义部分实现。接口的优点是,无论对象从哪个类继承,它们都可以由提供必要方法的任何对象实现。
抽象方法通常用于提供部分实现。列表接口就是一个例子,它定义了列表集合的行为,而AbstractList提供了大多数列表实现所需的一些方法,以便更容易地实现列表。列表不需要从AbstractList继承,但许多实现都需要,但是使用列表的代码不需要关心它们使用的实现是否扩展AbstractList。
有些人使用抽象类代替接口,但这通常被认为是反模式的。
因为,抽象类可以有非抽象方法,所以可以在非抽象方法中重用代码!