抽象類介面的區別?
阿新 • • 發佈:2020-12-08
抽象類:
- 抽象類使用abstract修飾;
- 抽象類不能例項化,即不能使用new關鍵字來例項化物件;
- 含有抽象方法(使用abstract關鍵字修飾的方法)的類是抽象類,必須使用abstract關鍵字修飾;
- 抽象類可以含有抽象方法,也可以不包含抽象方法,抽象類中可以有具體的方法;
- 如果一個子類實現了父類(抽象類)的所有抽象方法,那麼該子類可以不必是抽象類,否則就是抽象類;
- 抽象類中的抽象方法只有方法體,沒有具體實現;
介面:
- 介面使用interface修飾;
- 介面不能被例項化;
- 一個類只能繼承一個類,但是可以實現多個介面;
介面中方法均為抽象方法
;- 介面中不能包含例項域或靜態方法(靜態方法必須實現,介面中方法是抽象方法,不能實現)
區別
抽象類可以提供成員方法的實現細節
,而介面中沒有;但是JDK1.8之後,在接口裡面可以定義default方法,default方法裡面是可以具備方法體的。- 抽象類中的成員變數可以是
各種型別
的,而介面中的成員變數只能是public static final
型別; - 介面中每一個方法也是隱式指定為 public abstract,不能含有靜態程式碼塊以及靜態方法,而抽象類可以有
靜態程式碼塊和靜態方法
; - 一個類只能繼承
一個
抽象類,而一個類卻可以實現多個