個(gè)人筆記,僅供參考
1、概念
接口即一種公共規(guī)范標(biāo)準(zhǔn)
只要符合標(biāo)準(zhǔn),就可以通用
2、定義基本格式
接口就是多個(gè)類的公共規(guī)范,是引用數(shù)據(jù)類型
最重要的就是其中的抽象方法
public interface 接口名稱{
//接口內(nèi)容
}
備注:編譯生成的字節(jié)碼文件還是.class
可以包含的內(nèi)容:
1、常量(java7)
2、抽象方法(java7)
3、默認(rèn)方法(java8)
4、靜態(tài)方法(java8)
5、私有方法(java9)
3、定義
創(chuàng)建接口時(shí)要選擇interface
public interface interfaceDemo {
//抽象方法
public abstract void methodAbs1();
//接口中抽象方法必須用兩個(gè)固定的修飾符
//可以選擇性省略
public abstract void methodAb2();
abstract void methodAbs3();
void methodAbs4();
//方法三要素可以隨意定義
}
4、接口使用步驟
1、不能直接使用,必須有一個(gè)實(shí)現(xiàn)類,來實(shí)現(xiàn)該接口
public class 實(shí)現(xiàn)類名稱 implements 接口名稱{
//...
}
2、接口的實(shí)現(xiàn)類必須覆蓋重寫(實(shí)現(xiàn))接口中所有的抽象方法,去掉abstract關(guān)鍵字,加大括號(hào)
3、創(chuàng)建實(shí)現(xiàn)類的對(duì)象,使用
注意:如果實(shí)現(xiàn)類沒有覆蓋重寫所有抽象方法,那他自己就必須是抽象類
5、接口的默認(rèn)方法
public default 返回值類型 方法名稱(參數(shù)列表){方法體}
解決接口升級(jí)的問題,默認(rèn)方法會(huì)被實(shí)現(xiàn)類繼承
1、接口的默認(rèn)方法,可以通過實(shí)現(xiàn)類對(duì)象直接調(diào)用
2、接口的默認(rèn)方法,也可以用過接口實(shí)現(xiàn)類覆蓋重寫
6、接口的靜態(tài)方法
格式:
public static 返回值類型 方法名稱(參數(shù)列表){方法體}
使用:
1、不能通過接口實(shí)現(xiàn)類對(duì)象來直接調(diào)用接口中的靜態(tài)方法
2、通過接口名稱直接調(diào)用
? 接口名稱.靜態(tài)方法名(參數(shù))
7、接口的私有方法
java9才有
有時(shí)候需要抽取一個(gè)公共方法來解決代碼重復(fù)的問題,但使用默認(rèn)方法會(huì)讓實(shí)現(xiàn)類也繼承下去,此時(shí)應(yīng)使用私有方法
1、普通私有方法:解決對(duì)個(gè)默認(rèn)方法之間代碼重復(fù)問題
2、靜態(tài)私有方法:解決多個(gè)靜態(tài)方法之間代碼重復(fù)問題
格式:
private 返回值類型 方法名稱(參數(shù)列表){
方法體
}//普通
private static 返回值類型 方法名稱(參數(shù)列表){
方法體
}
8、接口的常量定義和使用
接口當(dāng)中也可以定義"成員變量",但是必須使用public static final 三個(gè)關(guān)鍵字修飾,其實(shí)就是接口的常量
格式
public static final 數(shù)據(jù)類型 常量名稱 = 數(shù)據(jù)值
final為不可變
可以省略這三個(gè)關(guān)鍵字
接口中的常量必須賦值
注意:常量名稱用大寫,用下劃線分隔
使用:接口名稱.常量名稱
9、繼承父類并實(shí)現(xiàn)多個(gè)接口
public class MyInterfaceImpl implments MyInterfaceA, MyInterfaceB{
//覆蓋重寫所有抽象方法
}
如果實(shí)現(xiàn)的多個(gè)接口中存在重復(fù)的抽象方法,只要覆蓋重寫一次即可。
如果實(shí)現(xiàn)的多個(gè)接口有重復(fù)的默認(rèn)方法,那么實(shí)現(xiàn)類要對(duì)沖突的默認(rèn)方法覆蓋重寫
一個(gè)類如果直接父類當(dāng)中的方法和接口當(dāng)中的默認(rèn)方法產(chǎn)生了沖突,優(yōu)先用父類的方法
10、接口之間的多繼承
1、類與類之間是單繼承的,直接父類只有一個(gè)
2、類與接口之間是多實(shí)現(xiàn)的,一個(gè)類 可以實(shí)現(xiàn)多個(gè)接口
3、接口與接口之間是多繼承的,