接口和抽象類的區別是什麼?

  1. 接口的方法默認是 public,所有方法在接口中不能有實現(Java 8 開始接口方法可以有默認實現),而抽象類可以有非抽象的方法。
  2. 接口中除了static、final變量,不能有其他變量,而抽象類中則不一定。
  3. 一個類可以實現多個接口,但只能實現一個抽象類。接口自己本身可以通過extends關鍵字擴展多個接口。
  4. 接口方法默認修飾符是public,抽象方法可以有public、protected和default這些修飾符(抽象方法就是爲了被重寫所以不能使用private關鍵字修飾!)。
  5. 從設計層面來說,抽象是對類的抽象,是一種模板設計,而接口是對行爲的抽象,是一種行爲的規範。

備註:在JDK8中,接口也可以定義靜態方法,可以直接用接口名調用。實現類和實現是不可以調用的。如果同時實現兩個接口,接口中定義了一樣的默認方法,則必須重寫,不然會報錯。(詳見issue:https://github.com/Snailclimb/JavaGuide/issues/146)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章