Java中接口和抽象類的區別
1、接口不能包含構造器,抽象類可以包含構造器
2、接口要被類實現,抽象類要被子類繼承
3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現
4、接口裏定義的變量只能是公共的靜態的常量(public static final),抽象類中的變量是普通變量
5、接口中不能含有靜態代碼塊以及靜態方法,而抽象類可以有靜態代碼塊和靜態方法; 接口裏不能包含初始化塊,但抽象類裏可以包含初始化塊(原因:抽象方法要被實現,所以不能是靜態的,也不能是私有的)
5、抽象類裏的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那麼該子類只能是抽象類。同樣,一個實現接口的時候,如不能全部實現接口方法,那麼該類也只能爲抽象類
6、接口是設計的結果 ,抽象類是重構的結果
7、接口可繼承接口,並可多繼承接口,但類只能單根繼承