抽象和接口


定義

  • 抽象類:含有抽象方法(abstract修飾的方法)的類,用來捕捉子類的通用特性,不能被實例化,只能被用作子類的超類。抽象類是用來創建繼承層級里子類的模板。
  • 接口:是抽象方法的集合。

 

對比

  抽象類 接口
默認方法實現 可以有默認方法實現 接口完全抽象,不存在方法實現
實現

extends關鍵字。

如果子類不是抽象類,需要提供抽象類中所有聲明的抽象方法的實現

implements關鍵字。

提供接口中所有聲明方法實現

構造函數 可以有構造函數,用於子類訪問父類數據的初始化 不能有構造函數
與正常類區別 除了不能實例化外無區別 接口是完全不同的類型
訪問修飾符 抽象方法可以有public、protected和default 默認public,不能用其他
   main方法  可以有且可運行 不能有,無法運行
多繼承 可繼承一個類和實現多個接口 一個接口可以繼承多個其他接口
添加新方法 抽象類中添加新方法,可提供默認實現,不需改變現有代碼 改變實現該接口的類
速度 比接口速度快  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用場景

  • 如果有一些方法且其中有一些有默認實現,使用抽象類
  • 如果想實現多繼承必須使用接口,因為java不支持多繼承,子類不能繼承多個父類,但可以實現多個接口
  • 如果基本功能在不斷改變,需使用抽象類
  • 抽象繼承表示 is a 的關系,接口實現表示 has a 的關系
  • 一個類不能extends多個類,但可以繼承implements多個接口
  • 一個接口不能implements任何接口,但可以extends多個接口
  • 抽象類implements接口,可以不用重寫接口的方法,可以全部不重寫或只重寫一部分方法
  • 普通類implements接口,必須重寫接口的所有方法
  • 接口B extends 接口A,實現類C implements 接口B時,類C必須實現接口A和接口B中的所有方法

 


免責聲明!

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



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