Skip to content

接口与抽象类

  • 类(class)是构造对象的模板或蓝图。
  • 抽象类作为派生其它类的基类,而不作为想使用的特定的实例类。
  • 抽象方法充当着占位的角色,它们的具体实现在子类中。
  • 每个类只能扩展于一个类(单继承)。
  • 接口(interface)主要用来描述类具有什么功能,而不给出每个功能的具体实现。

一个类可以实现一个或多个接口。

  • 接口不是类。
  • 接口中的方法都自动地设置为public
  • 接口中的域自动设置为public static final

选择接口和抽象类是不是一个非此即彼的命题。如果你需要修改你的设计,使用接口。然而,你可以使用抽象类来提供一些默认的方法。在应用框架中,抽象类是一个很好的选择。

抽象类让你定义一些操作;并且强迫子类去提供另外的方法。比如,你有一个应用框架,一个抽象类可以提供像是处理消息和事件的默认服务。这些服务允许你的应用连接到应用框架。然而,一些应用独有的功能只能在你的应用中使用。 独有的功能比如应用依赖的启动和关闭任务。抽象类可以声明抽象的关闭和启动方法,而不用再自己定义。基础类知道它需要这些方法,但你的子类不知道如何去实现那些方法,只知道必须继承这些动作。需要启动时,抽象类能调用启动方法。 当基类调用这个方法,Java调用子类复写的方法。

很多开发者忘记了定义了抽象方法的类也能够调用这些方法。抽象类是一个很好的方法来创建计划的继承层次结构。 它们对于类继承中的非叶层次是一个好的选择。

http://www.javaworld.com/article/2077421/learn-java/abstract-classes-vs-interfaces.html