抽象類Abstract Class和接口Interface區別
抽象類是為了隱藏內部實現,只向外部展示當前類具備的功能。
Abstract Class與Interface的區別
- 默認實現: 接口不可用有實現,必須是絕對的抽象方法。抽象類可以有實例來實現默認行為。
- 方法類型: 接口只能有抽象方法。抽象類可以有抽象方法和非抽象方法。從Java 8開始,抽象類可以增加默認實現和靜態方法。
-
Final 變量: 接口內的變量默認會聲明為
final
類型。抽象類可以持有非final變量。 -
變量類型: 抽象類可以持有
final
,非final
,靜態和非靜態變量。接口只能持有靜態和final
變量。 - 實現: 抽象類可以提供接口的實現,接口不能提供抽象類的實現。
-
繼承和抽象區別: 接口通過
implements
關鍵字實現,抽象類通過extends
關鍵字實現。 - 多重實現: 接口可以繼承一個或多個接口。抽象類只能繼承一個Java類,可以實現多個Java接口。
-
數據成員的可訪問性: 接口的成員默認是
public
的。抽象類的成員可以是private
、protected
等。
使用場景
何時用抽象類,何時用接口
接口可以對不用的類適用,實現類之間不需要有什么共同點。
知識點補充
多繼承
Java是否支持多繼承,在多繼承時的特點與場景,優劣勢
實現多接口
Java是否支持實現多接口,在多繼承時的特點與場景,優劣勢