抽象類與介面的關係
阿新 • • 發佈:2018-12-31
抽象類和介面是Java中最重要的概念!
區別點 | 抽象類(abstract class) | 介面(interface) |
---|---|---|
定義 | 包含一個抽象方法的類 | 抽象方法和全域性常量的結合 |
組成 | 構造方法、抽象方法、普通方法、常量、變數 | 常量、抽象方法 |
使用 | 子類繼承抽象類(extends) | 子類實現介面(implements) |
關係 | 抽象類可以實現多個介面 | 介面不能繼承抽象類,但允許繼承多個介面 |
常見設計模式 | 模板設計 | 工廠設計、代理設計 |
物件 | 都通過物件的多型性產生例項化物件 | 都通過物件的多型性產生例項化物件 |
侷限 | 抽象類有單繼承的侷限 | 介面沒有此侷限 |
實際 | 作為一個模板 | 作為一個標準或表示一種能力 |
選擇 | 如果抽象類和介面都可以使用,優先使用介面,避免單繼承的侷限 | 如果抽象類和介面都可以使用,優先使用介面,避免單繼承的侷限 |
特殊 | 一個抽象類可以包含多個介面,一個介面中可以包含多個抽象類 | 一個抽象類可以包含多個介面,一個介面中可以包含多個抽象類 |
原則:
1、一個類不要去繼承一個已經實現好的類,只能繼承抽象類或實現介面。
2、如果介面和抽象類都可以使用,要優先使用介面,避免單繼承的侷限。