Java 的接口
public interface 類名
接口是Java方法的合集,用於給不同的類實現同名的方法,
接口是一個只有抽象方法的抽象類,
1、接口中可以定義變量,但是變量必須有固定的修飾符修飾,public static final 所以接口中的變量也稱之為常量,其值不能改變。后面我們會講解static與final關鍵字
2、接口中可以定義方法,方法也有固定的修飾符,public abstract
3、接口不可以創建對象。
4、子類必須覆蓋掉接口中所有的抽象方法后,子類才可以實例化。否則子類是一個抽象類。
接口的子集 使用關鍵詞implements來繼承,也叫做實現。
一個普通類只能單繼承(接口允許多繼承)但是允許多實現,
舉例:我們都知道電腦上留有很多個插口,而這些插口可以插入相應的設備,這些設備為什么能插在上面呢?主要原因是這些設備在生產的時候符合了這個插口的使用規則,否則將無法插入接口中,更無法使用。發現這個插口的出現讓我們使用更多的設備。
總結:接口在開發中的它好處
1、接口的出現擴展了功能。
2、接口其實就是暴漏出來的規則。
3、接口的出現降低了耦合性,即設備與設備之間實現了解耦。
接口的出現方便后期使用和維護,一方是在使用接口(如電腦),一方在實現接口(插在插口上的設備)。例如:筆記本使用這個規則(接口),電腦外圍設備實現這個規則(接口)。
總結接口和抽象類的區別:
相同點:
l 都位於繼承的頂端,用於被其他類實現或繼承;
l 都不能直接實例化對象;
l 都可以包含抽象方法,其子類都必須覆寫這些抽象方法;
區別:
l 抽象類為部分方法提供實現,避免子類重復實現這些方法,提高代碼重用性;接口只能包含抽象方法;
l 一個類只能繼承一個直接父類(可能是抽象類),卻可以實現多個接口;(接口彌補了Java的單繼承)
l 抽象類是這個事物中應該具備的內容, 繼承體系是一種 is..a關系
l 接口是這個事物中的額外內容,繼承體系是一種 like..a關系
二者的選用:
l 優先選用接口,盡量少用抽象類;
l 需要定義子類的行為,又要為子類提供共性功能時才選用抽象類;
多態
多態體現為父類引用變量可以指向子類對象。
多態的前提是必須有子父類關系或者類實現接口關系,否則無法完成多態。
在使用多態后的父類引用變量調用方法時,會調用子類重寫后的方法。

l 多態成員變量
當子父類中出現同名的成員變量時,多態調用該變量時:
編譯時期:參考的是引用型變量所屬的類中是否有被調用的成員變量。沒有,編譯失敗。
運行時期:也是調用引用型變量所屬的類中的成員變量。
簡單記:編譯和運行都參考等號的左邊。編譯運行看左邊。
l 多態成員方法
編譯時期:參考引用變量所屬的類,如果類中沒有調用的方法,編譯失敗。
運行時期:參考引用變量所指的對象所屬的類,並運行對象所屬類中的成員方法。
簡而言之:編譯看左邊,運行看右邊。
1.1 instanceof關鍵字

