Java中接口与抽象类的异同

  1. 定义(如下是百度百科中的定义):

      Java接口:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,所以这些方法能够在不一样的地方被不一样的类实现,而这些实现能够具备不一样的行为(功能)。设计

        我的补充:Java接口中也能够有属性,只不过必须为 静态常量(由public static final修饰),所以 有数据共享的做用。对象

      Java抽象类:Java语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类。抽象类是它的全部子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类能够看做是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。继承

        我的补充:Java抽象类也能够不含抽象方法,这样的话纯粹是为了避免容许实例化。不过我的感受真正这样设计没什么卵意义。接口


 

相同点:百度

  1. 都位于继承的顶端,被用于实现或继承。
  2. 都不能实例化。
  3. 都拥有须要被实现的抽象方法(抽象类能够没有抽象方法,不过不多有真正这样设计的)。

不一样点:方法

  • 从继承的角度:抽象类只容许单继承,而接口容许多继承。
  • 从实现的角度:抽象类中容许有具体实现的方法,而接口则全部方法必为抽象方法(JDK8中接口新增了一个特性:接口中能够有静态实现方法)。接口中的属性必须为静态常量(由public static final修饰),而抽象类中没这个限制。接口还不能有构造方法,抽象类也没这个限制。
相关文章
相关标签/搜索