1.接口
1、接口中可以定義變量,但是變量必須有固定的修飾符修飾,public static final 所以接口中的變量也稱之爲常量,其值不能改變。
2、接口中可以定義方法,方法也有固定的修飾符,public abstract
3、接口不可以創建對象。
4、子類必須覆蓋掉接口中所有的抽象方法後,子類纔可以實例化2。否則子類是一個抽象類。
2.接口和抽象類的區別
1.共性:
不斷的進行抽取,抽取出抽象的,沒有具體實現的方法,都不能實例化(不能創建對象)
2.區別1:與類的關係
(1)類與接口是實現關係,而且是多實現,
類與抽象類是繼承關係,Java中的繼承是單一繼承,多層繼承,一個類只能繼承一個父類,但是可以有爺爺類。
(2)區別2: 成員
a.成員變量
抽象類可以有成員變量,也可以有常量
接口只能有常量,默認修飾符public static final
b.成員方法
抽象類可以有抽象方法,也可以有非抽象方法
接口只能有抽象方法,默認修飾符 public abstract
c.構造方法
抽象類有構造方法,爲子類提供
接口沒有構造方法
3.多態
A.父類類型 變量名 = new 子類類型();
變量名.方法名();
B.多態的前提:
子父類的繼承關係
方法的重寫
父類引用指向子類對象
動態綁定:運行期間調用的方法,是根據其具體的類型
C.多態的成員特點:
成員變量 編譯時看的是左邊,運行時看的左邊
成員方法 編譯時看的是左邊,運行時看右邊
靜態方法 編譯時看的是左邊,運行時看的也是左邊
編譯時看的都是左邊,運行時成員方法看的是右邊,其他(成員變量和靜態的方法)看的都是左邊
4.多態中的向上轉型和向下轉型
向下轉型:一個已經向上轉型的子類對象可以使用強制類型轉換的格式,將父類引用轉爲子類引用,這個過程是向下轉型。
如果是直接創建父類對象,是無法向下轉型的
使用格式:
子類類型 變量名 = (子類類型) 父類類型的變量;
如:Student stu = (Student) p; //變量p 實際上指向Student對象
多態的優缺點
優點:可以提高可維護性(多態前提所保證的),提高代碼的可擴展性
缺點:無法直接訪問子類特有的成員