抽象類和介面 概念
抽象類不能被例項化,但可以建立一個引用變數,其型別是一個抽象類,指向非抽象的子類例項
抽象類與抽象方法的使用:
(1)抽象類中可以沒有抽象方法,單包含了抽象方法的類必須被定義為抽象類
(2)如果子類沒有實現父類的所有抽象方法,子類不許被定義為抽象類
(3)沒有抽象構造方法,也沒有抽象靜態方法
(4)抽象類中可以有非抽象的構造方法,建立子類的例項時可以被呼叫
介面:public interface MyInterface{}
接口裡的方法全部都是公共的抽象方法,接口裡的變數都是靜態常量(publicstatic final)
介面特性:
(1)介面不可以被例項化
(2)實現類(就和繼承一樣,實現介面的類就是實現類)必須實現介面的所有方法
(3)實現類可以實現多個介面 implements、多個介面使用用逗號隔開
概念性的介面,系統對外提供的所有服務
實在的介面,interface
介面使用:
介面中的成員變數
預設都是public abstract final的,必須顯示初始化
介面中的方法:
預設都是public abstract的
除了成員變數和構造方法,不能包含其他
介面沒有構造方法,不能被例項化
一個介面不能實現另一個介面,但可以繼承多個其他介面
一個類必須實現介面抽象方法(implements),除非這個類也是抽象類
抽象類VS介面
相同點 不同點
(1)代表系統的抽象層 (1)在抽象類中可以為部分方法提供預設實現,而介面中只能包含抽象方法
(2)都不能被例項化 (2)一個類只能繼承一個直接的父類,但可以實現多個介面
(3)都能包含抽象方法 (3)已存在的繼承樹,可以方便的抽取介面,但是抽取抽象類不容易