定義
接口就是一種公共的規(guī)范標準,只要符合規(guī)范標準,就可以大家通用
代碼中,接口是多個類的公共規(guī)范跌捆,是一種引用類型徽职,其中最重要的就是其中的抽象方法象颖;
使用
格式:public interface 接口名稱{}
編譯生成的字節(jié)碼文件仍然是:.java --> .class
包含的內容:
JDK7: 1、常量 2姆钉、抽象方法
JDK8新增:3说订、默認方法 4、靜態(tài)方法
JDK9新增:5潮瓶、私有方法
常量
定義格式
接口中也可以定義成員變量陶冷,使用 pulic static final 關鍵字修飾,從效果來看毯辅,這就是接口的常量(可以省略這三個關鍵字)
格式:[public] [static] [final] 數(shù)據(jù)類型 常量名稱 = 數(shù)據(jù)值;
注意:
1埂伦、接口中的常量,可以省略這三個關鍵字思恐,不寫也這樣
2沾谜、接口中的常量膊毁,必須進行賦值,不能不賦值
3基跑、接口中的常量名稱婚温,使用完全大寫的字母,用下劃線進行分隔(推薦)
抽象方法:
定義格式
[public] [abstract] 返回值類型 方法名稱(參數(shù)列表);
注意:
1媳否、接口當中的抽象方法栅螟,修飾符必須是兩個固定的關鍵字:public abstract
2、這兩個關鍵字修飾符篱竭,可以選擇性的省略
3力图、方法的三要素可以隨意定義;
使用步驟
1掺逼、接口不能直接使用搪哪,必須有一個實現(xiàn)類來實現(xiàn)該接口
格式:public class 實現(xiàn)類名稱 implements 接口名稱 {}
2、接口的實現(xiàn)類必須覆蓋重寫(實現(xiàn))接口中的所有抽象方法坪圾;
3晓折、創(chuàng)建實現(xiàn)類的對象進行使用;
注意事項:
如果實現(xiàn)類并沒有覆蓋重寫接口中所有的抽象方法兽泄,那么這個實現(xiàn)類就必須是抽象類
默認方法
定義格式
格式:[public] default 返回值類型 方法名稱(參數(shù)列表){? //方法體 }?
目的:解決接口升級的問題
使用步驟
1漓概、接口的默認方法可以通過接口的實現(xiàn)對象直接調用(繼承)
2、接口的默認方法也可以被接口實現(xiàn)類進行覆蓋重寫
靜態(tài)方法
定義格式
格式:[public] static 返回值類型 方法名稱(參數(shù)列表) { //方法體}?
使用步驟
通過接口名稱直接調用其中的靜態(tài)方法
格式:接口名稱.靜態(tài)方法名稱(參數(shù)列表);
注意:
1病梢、不能通過接口實現(xiàn)類的對象來調用接口當中的靜態(tài)方法
2胃珍、不能通過接口實現(xiàn)類對接口當中的靜態(tài)方法進行覆蓋重寫
私有方法
定義格式
1、普通私有方法:解決多個默認方法之間重復代碼問題
格式:private 返回值類型 方法名稱(參數(shù)列表){ //方法體 }
2蜓陌、靜態(tài)私有方法:解決多個靜態(tài)方法之間重復代碼問題
格式:private static 返回值類型 方法名稱(參數(shù)列表){ //方法體 }
使用步驟
接口中直接調用(只能在接口中使用)
使用注意事項
1觅彰、接口沒有靜態(tài)代碼塊和構造方法
2、一個類的直接父類有且只有一個钮热,但是一個類可以同時實現(xiàn)多個接口
? ? 格式:public class MyInterfaceImpl implements?MyInterfaceA,?MyInterfaceB{}
3填抬、如果實現(xiàn)類所實現(xiàn)的多個接口中,存在重復的抽象方法隧期,那么只需要覆蓋重寫一次即可
4飒责、如果實現(xiàn)類沒有覆蓋重寫所有接口當中的所有抽象方法,那么實現(xiàn)類就必須是一個抽象類
5仆潮、如果實現(xiàn)類所實現(xiàn)的多個接口中宏蛉,存在重復的默認方法,那么實現(xiàn)類一定要對沖突的默認方法進行覆蓋重寫
6性置、一個類如果直接父類中的方法和接口中的默認方法產生了沖突拾并,優(yōu)先用父類中的方法
7、如果實現(xiàn)類所實現(xiàn)的多個接口中,存在重復的靜態(tài)方法嗅义,因為靜態(tài)方法調用格式為:接口名稱.靜態(tài)方法名稱个榕,因而沒有影響
接口、類之間的繼承實現(xiàn)關系
1芥喇、類與類之間是單繼承的西采,直接父類只有一個
2、類與接口之間是多實現(xiàn)的继控,一個類可以實現(xiàn)多個接口(要覆蓋重寫沖突)
3械馆、接口與接口之間是多繼承的
注意:
1、多個父接口當中的抽象方法如果重復武通,沒關系
2霹崎、多個父接口當中的默認方法如果重復,子接口必須進行默認方法的覆蓋重寫冶忱,而且?guī)е鴇efault關鍵字
3尾菇、多接口繼承時,要避免出現(xiàn)抽象方法名稱相同囚枪、參數(shù)列表相同派诬、返回值類型不同的的方法,會出現(xiàn)方法定義重復链沼。