接口与抽象类的区别

时间:2013-08-08 06:43:50

标签: java

为什么我们在已经给出抽象类时使用接口?

interface A  { 
    void show(); 
} 

class TestA implements A {
    public void show(){}
}

abstract class B {
   abstract void show();
}

class TestB extends B {
   public void show(){}
}

2 个答案:

答案 0 :(得分:3)

接口和抽象类的不同之处在于接口描述行为,而抽象类定义部分实现。接口的优点是它们可以由提供必要方法的任何对象实现,无论该对象从哪个类继承。

抽象方法通常用于提供部分实现。一个示例是List接口,它定义了List集合的行为,与AbstractList相比,它提供了大多数List实现所需的一些方法,以便更容易实现List。列表不需要从AbstractList继承,但许多实现都这样做,但使用List的代码从不关心它们使用的实现是否扩展了AbstractList。

有些人使用抽象类作为接口的替代品,但这通常被认为是反模式。

答案 1 :(得分:0)

因为,Abstract类可以有非抽象方法,所以你可以在非抽象方法中重用代码!