java中抽象類跟接口的區別

抽象類:

含有abstract修飾符的class即爲抽象類,

abstract類不能創建實例對象,

含有abstract的方法的類必須定義爲abstract class,

abstract class 裏的方法不必是抽象的,

抽象類中定義抽象方法必須放在具體子類中實現,所以,不能有抽象的構造方法和抽象的靜態方法,如果子類沒有實現抽象父類中的所有方法,那麼,子類也必須定義爲抽象類。

接口:

接口可以說成是抽象類的特例。接口中的所有方法必須是抽象的,接口中的方法定義默認爲public abstract。 接口中的變量是全局常量。即public static final 修飾的。

語法上的區別:

1.抽象類裏可以有構造方法,而接口內不能有構造方法。

2.抽象類中可以有普通成員變量,而接口中不能有普通成員變量。

3.抽象類中可以包含非抽象的普通方法,而接口中所有的方法必須是抽象的,不能有非抽象的普通方法。

4.抽象類中的抽象方法的訪問類型可以是public ,protected和默認類型,但接口中的抽象方法只能是public 類型的,並且默認即爲public abstract  類型。

5.抽象類中可以包含靜態方法,接口內不能包含靜態方法。

6.抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,但接口中定義的變量只能是public static 類型,並且默認爲public static類型。

7.一個類可以實現多個接口,但只能繼承一個抽象類。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章