abstract class與interface區別

ü  含有abstract修飾符的class即爲抽象類,abstract類不能創建實例對象,含有abstract方法的類必須定義爲abstract classabstract class類中的方法不必是抽象的,abstract定義的抽象方法必須在子類中實現,所以不能有抽象構造方法或抽象靜態方法,如果子類沒有實現抽象父類的所有抽象方法,那麼子類也必須定義爲abstract類型;

ü  Interface可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的,接口中的方法默認定義爲public abstract類型,接口中的成員變量類型默認爲public static final

下面比較兩者的區別:

ü  抽象類可以有構造方法,接口中不能有構造方法

ü  抽象類中可以有普通成員變量,接口中沒有普通成員變量;

ü  抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法;

ü  抽象類中方法的訪問類型可以是public,protected(默認類型,雖然eclipse下不報錯,但應該也不行),但接口的抽象方法只能是public類型的,並且默認即爲public abstract類型

ü  抽象類中可以包含靜態方法,接口中不能包含靜態方法;

ü  抽象類和接口中都可以包含靜態成員變量;

ü  一個類可以實現多個接口,但只能繼承一個抽象類;

ü  抽象類可以實現接口,也可以繼承具體的類;但是接口只能繼承(extends)接口,不能實現接口和繼承具體的類;

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