如果大家瀏覽過javaAPI文檔的話,大家應該經常會看到接口和抽象類,那麼抽象類和普通的類有什麼區別,接口和抽象類又有什麼區別呢,我們為什麼需要使用抽象類和接口呢,它能為我們帶來什麼好處呢?特別是抽象類和接口之間的區別我們大家一定要掌握。
下文就兩者的區別做了一個比較詳細的描述。
抽象類和普通類的區別
1. 抽象類必須用public、procted 修飾(如果為private修飾,那麼子類則無法繼承,也就無法實現其抽象方法)。默認缺省為 public
2. 抽象類無法創建對象
3. 如果一個子類繼承抽象類,那麼必須實現其所有的抽象方法。如果有未實現的抽象方法,那麼必須定義為 abstract
接口
1、接口使用interface修飾;
2、接口不能被實例化;
3、一個類只能繼承一個類,但是可以實現多個接口;
4、接口中方法均為抽象方法;
5、接口中不能包含實例域或靜態方法(靜態方法必須實現,接口中方法是抽象方法,不能實現)
接口中的變量隱式的使用 public static final 修飾,並且需要給出初始值。方法隱式的使用 public abstract 修飾(並且只能是 public ,如果是 private,procted,那麼就編譯報錯)。接口中的方法默認不能有具體的實現(JDK1.8開始可以有默認的實現)
接口和抽象類的區別
1. 抽象類只能繼承一次,但是可以實現多個接口
2. 接口和抽象類必須實現其中所有的方法,抽象類中如果有未實現的抽象方法,那麼子類也需要定義為抽象類。抽象類中可以有非抽象的方法
3. 接口中的變量必須用 public static final 修飾,並且需要給出初始值。所以實現類不能重新定義,也不能改變其值。
4. 接口中的方法默認是 public abstract,也只能是這個類型。不能是 static,接口中的方法也不允許子類覆寫,抽象類中允許有static 的方法
閱讀更多 北大青鳥亦莊校區 的文章