詳解Java接口的相關(guān)知識
一、接口概述
接口,是Java語言中一種引用類型,是方法的集合,如果說類的內(nèi)部封裝了成員變量、構(gòu)造方法、成員方法,那么接口的內(nèi)部主要就是封裝了方法,包含抽象方法(JDK 7及以前)、默認(rèn)方法和靜態(tài)方法(JDK8),私有方法(JDK9)。
二、定義格式
接口格式
public interface 接口名稱 {
// 抽象方法
// 默認(rèn)方法
// 靜態(tài)方法
// 私有方法
}
接口不能直接使用,必須有一個“實現(xiàn)類"來”實現(xiàn)接口“。
實現(xiàn)類格式:
public class 實現(xiàn)類名稱 implements 接口名稱{
//覆蓋重寫接口中的抽象方法【必須】
//重寫接口中的默認(rèn)方法【可選】
}
1.接口的實現(xiàn)類必須覆蓋重寫(實現(xiàn))接口中所有的抽象方法。
實現(xiàn):去掉abstract關(guān)鍵字,加上方法體大括號。
2.創(chuàng)建實現(xiàn)類的對象,進行使用。
注意事項:
如果實現(xiàn)類并沒有覆蓋重寫接口中所有的抽象方法,那么這個實現(xiàn)類自己就必須是抽象類。
2.1 抽象方法
抽象方法:使用abstract關(guān)鍵字修飾,可以省略,沒有方法體。該方法供子類實現(xiàn)使用。
代碼如下:
public interface 接口名稱 {
public abstract void 方法名稱();
}
注意事項:
1.抽象方法中的修飾符必須是兩個固定的關(guān)鍵字:public abstract。這兩個關(guān)鍵字修飾符,可以選擇性省略。
2.方法的三要素,可以隨意定義。
3.接口的實現(xiàn)類必須覆蓋重寫所有的抽象方法。
2.2 默認(rèn)方法和靜態(tài)方法
- 默認(rèn)方法:使用
default關(guān)鍵字修飾,不可省略,供子類調(diào)用或者子類重寫。
備注:接口當(dāng)中的默認(rèn)方法,可以解決接口升級的問題。
- 靜態(tài)方法:使用
static關(guān)鍵字修飾,供接口直接調(diào)用。
public interface 接口名稱{
// 默認(rèn)方法
public default void 方法名稱(){
// 方法體
}
// 靜態(tài)方法
public static void 方法名稱(){
// 方法體
}
}
靜態(tài)方法使用注意事項:
不能通過接口實現(xiàn)類的對象來調(diào)用接口當(dāng)中的靜態(tài)方法。
正確用法:通過接口名稱,直接調(diào)用其中的靜態(tài)方法。
格式:
接口名稱.靜態(tài)方法(參數(shù));
2.3 私有方法
私有方法:使用private修飾,供接口中的默認(rèn)方法或者靜態(tài)方法調(diào)用。
格式如下:
public interface 接口名稱{
// 普通私有方法,解決多個默認(rèn)方法之間的重復(fù)代碼問題
private 返回值類型 方法名稱(參數(shù)列表){
// 執(zhí)行語句
}
// 靜態(tài)私有方法,解決多個靜態(tài)方法之間重復(fù)代碼問題
private static 返回值類型 方法名稱(參數(shù)列表){
// 執(zhí)行語句
}
}
2.4 成員變量
接口中也可以定義“成員變量”,但是必須使用public static final三個關(guān)鍵字進行修飾。
從效果上來看,這其實就是接口中的【常量】。
格式:
public static final 數(shù)據(jù)類型 常量名稱 = 數(shù)據(jù)值;
注意事項:
1.public、static、final三個關(guān)鍵字都可以省略。
2.接口中的常量,必須進行賦值,不能不賦值。
3.接口中的常量名稱,使用的字符必須全部大寫,用下劃線進行分隔。
三、接口的注意事項
1.接口是沒有靜態(tài)代碼塊或者構(gòu)造方法的。
2.一個類的直接父類是唯一的,但是一個類可以同時實現(xiàn)多個接口。
格式:
public class 類名稱 implements 接口1,接口2,...{
// 覆蓋重寫所有抽象方法
}
3.如果實現(xiàn)類所實現(xiàn)的多個接口當(dāng)中,存在重復(fù)的抽象方法,那么只需要覆蓋重寫一次即可。
4.如果實現(xiàn)類沒有覆蓋重寫所有接口當(dāng)中的所有抽象方法,那么實現(xiàn)類就必須是一個抽象類。
5.如果實現(xiàn)類所實現(xiàn)的多個接口當(dāng)中,存在重復(fù)的默認(rèn)方法,那么實現(xiàn)類一定要對沖突的默認(rèn)方法進行覆蓋重寫。
6.一個類如果直接父類當(dāng)中的方法,和接口當(dāng)中的默認(rèn)方法產(chǎn)生了沖突,優(yōu)先用父類當(dāng)中的方法。
四、接口的特點
- 多實現(xiàn)性:一個類可以實現(xiàn)多個接口
- 多繼承性:一個接口可以繼承多個接口。
注意事項:
1.多個父接口當(dāng)中的抽象方法如果重復(fù),沒關(guān)系,不要管。
2.多個父接口當(dāng)中的默認(rèn)方法如果重復(fù),那么子接口必須進行默認(rèn)方法的覆蓋重寫,【而且?guī)е鴇efault關(guān)鍵字】。
到此這篇關(guān)于詳解Java接口的相關(guān)知識的文章就介紹到這了,更多相關(guān)Java接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
5分鐘快速學(xué)會spring boot整合JdbcTemplate的方法
這篇文章主要給大家介紹了如何通過5分鐘快速學(xué)會spring boot整合JdbcTemplate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot整合JdbcTemplate具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
解決Mybatis查詢方法selectById()主鍵不一致問題
這篇文章主要介紹了解決Mybatis查詢方法selectById()主鍵不一致問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Java發(fā)送帶html標(biāo)簽內(nèi)容的郵件實例代碼
下面小編就為大家?guī)硪黄狫ava發(fā)送帶html標(biāo)簽內(nèi)容的郵件實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
Mybatis-Plus中Mapper的接口文件與xml文件相關(guān)的坑記錄
這篇文章主要介紹了Mybatis-Plus中Mapper的接口文件與xml文件相關(guān)的坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Java Comparable 和 Comparator 的詳解及區(qū)別
這篇文章主要介紹了Java Comparable 和 Comparator 的詳解及區(qū)別的相關(guān)資料,Comparable 自然排序和Comparator 定制排序的實例,需要的朋友可以參考下2016-12-12

