面試題:抽象類和接口類的區別?


抽象類

  • 用abstract修飾
  • 不能被實例化,即不能用new關鍵字來實例化對象
  • 含有0個或多個抽象方法(抽象類可以沒有抽象方法,但是有抽象方法一定是抽象類)
  • 抽象方法只有方法體,沒有實現。
  • 如果子類實現了父類的所有抽象方法,那么它可以不是抽象類,否則一定是抽象類
  • 可以有具體的方法

接口

  • 用interface修飾
  • 不能被實例化
  • 一個類只能繼承一個類,但是可以實現多個接口
  • 接口中的方法均為抽象方法,沒有實現。
  • java8開始接口可以有默認實現
  • 不能有實例域和靜態方法

區別?

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM