为什么我们在已经给出抽象类时使用接口?
interface A {
void show();
}
class TestA implements A {
public void show(){}
}
abstract class B {
abstract void show();
}
class TestB extends B {
public void show(){}
}
答案 0 :(得分:3)
接口和抽象类的不同之处在于接口描述行为,而抽象类定义部分实现。接口的优点是它们可以由提供必要方法的任何对象实现,无论该对象从哪个类继承。
抽象方法通常用于提供部分实现。一个示例是List接口,它定义了List集合的行为,与AbstractList相比,它提供了大多数List实现所需的一些方法,以便更容易实现List。列表不需要从AbstractList继承,但许多实现都这样做,但使用List的代码从不关心它们使用的实现是否扩展了AbstractList。
有些人使用抽象类作为接口的替代品,但这通常被认为是反模式。
答案 1 :(得分:0)
因为,Abstract类可以有非抽象方法,所以你可以在非抽象方法中重用代码!