J a v a開發中抽象類和接口都有什麼區別?

如果大家瀏覽過javaAPI文檔的話,大家應該經常會看到接口和抽象類,那麼抽象類和普通的類有什麼區別,接口和抽象類又有什麼區別呢,我們為什麼需要使用抽象類和接口呢,它能為我們帶來什麼好處呢?特別是抽象類和接口之間的區別我們大家一定要掌握。

下文就兩者的區別做了一個比較詳細的描述。

J a v a開發中抽象類和接口都有什麼區別?

抽象類和普通類的區別

1. 抽象類必須用public、procted 修飾(如果為private修飾,那麼子類則無法繼承,也就無法實現其抽象方法)。默認缺省為 public

2. 抽象類無法創建對象

3. 如果一個子類繼承抽象類,那麼必須實現其所有的抽象方法。如果有未實現的抽象方法,那麼必須定義為 abstract

J a v a開發中抽象類和接口都有什麼區別?

接口

1、接口使用interface修飾;

2、接口不能被實例化;

3、一個類只能繼承一個類,但是可以實現多個接口;

4、接口中方法均為抽象方法;

5、接口中不能包含實例域或靜態方法(靜態方法必須實現,接口中方法是抽象方法,不能實現)

接口中的變量隱式的使用 public static final 修飾,並且需要給出初始值。方法隱式的使用 public abstract 修飾(並且只能是 public ,如果是 private,procted,那麼就編譯報錯)。接口中的方法默認不能有具體的實現(JDK1.8開始可以有默認的實現)


J a v a開發中抽象類和接口都有什麼區別?

接口和抽象類的區別

1. 抽象類只能繼承一次,但是可以實現多個接口

2. 接口和抽象類必須實現其中所有的方法,抽象類中如果有未實現的抽象方法,那麼子類也需要定義為抽象類。抽象類中可以有非抽象的方法

3. 接口中的變量必須用 public static final 修飾,並且需要給出初始值。所以實現類不能重新定義,也不能改變其值。

4. 接口中的方法默認是 public abstract,也只能是這個類型。不能是 static,接口中的方法也不允許子類覆寫,抽象類中允許有static 的方法


分享到:


相關文章: