1. 程式人生 > 其它 >介面與抽象類的異同

介面與抽象類的異同

介面與抽象類的異同

介面與抽象類的關係

  1. 相同點

    • 都不能被例項化
  2. 不同點

    • 繼承

      • 介面與介面之間可以繼承,並且可以多繼承,同時Java類可以實現多個介面
      • 抽象類則為單繼承
    • 成員

      • 介面:JDK 7 : 只能定義全域性常量(public static final )和抽象方法(public abstract),可省略不寫

        ​ JDK 8 : 除了定義全域性常量和抽象方法外,還可以定義靜態方法、預設方法(default)

      • 抽象類中成員變數預設default,可在子類中被重新定義,也可被重新賦值。

    • 構造器

      • 介面: 介面中不能定義構造器,意味著介面不能例項化
      • 抽象類中一定有構造器,便於子類例項化時使用
    • 修飾

      • abstract: 可以用來修飾的結構: 類、方法
      • 而介面和類是並列的兩個結構
    • 例項化

      • 如果實現類覆蓋了介面中的所有抽象方法,則此類就可以例項化
      • 如果實現類沒有覆蓋了抽象類中的所有抽象方法,則此類就仍為一個抽象類,反之,可以例項化
    • 理念

      • 介面,實際上就是一種規範,強調特定功能的實現
      • 而繼承抽象類強調所屬關係。