Java中抽象類和接口的區別

區別:

  1. 接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。

  2. 接口中的方法定義默認為 public abstract 類型,接口中的成員變量類型默認為 public static final (這里需要說一點,既然一個變量被final修飾了,那么這個變量就是一個常量!!!!!變量必須初始化成常量!!!!!)

語法區別:

  1. 抽象類可以有構造方法,接口中不能有構造方法。

  2. 抽象類中可以有普通成員變量,接口中沒有普通成員變量。

  3. 抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。

  4. 抽象類中的抽象方法的訪問類型可以是public,protected,但接口中的抽象方法只能是public類型的,并且默認即為public abstract類型。

  5. 抽象類中可以包含靜態(static)方法,接口中不能包含靜態(static)方法。

  6. 抽象類和接口中都可以包含靜態成員變量(static),抽象類中的靜態成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,并且默認即為public static final類型。

  7. 一個類只能繼承一個抽象類,但是可以實現多個接口。

  8. 一個接口可以繼承多個接口。

  9. 抽象類所體現的是一種繼承關系,要想使得繼承關系合理,父類和派生類之間必須存在"is-a"關系關系,即父類和派生類在概念本質上應該是相同的。對于接口則不然,并不要求接口的實現者和接口定義在概念本質上是一致的,僅僅是實現了接口定義的契約而已,是"like-a"的關系。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,690評論 0 11
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,143評論 0 62
  • (文/2015.8.17) 初 逞具 春風渡 心弦微觸 驅百年孤獨 魯王宮秦神樹 護他周全于險處 云頂蛇沼重重迷霧...
    _搖呀搖閱讀 201評論 0 0