-7

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

interface A  { 
    void show(); 
} 

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

abstract class B {
   abstract void show();
}

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

2 回答 2

3

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

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

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

于 2013-08-08T06:50:02.053 回答
0

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

于 2013-08-08T06:49:07.387 回答