Java詳細講解不同版本的接口語法和抽象類與接口的區(qū)別
什么是接口?
說到接口,USB大家肯定不陌生~
接口是一種標準、規(guī)范.
注意:接口一旦制定好,使用者和實現(xiàn)者都必須遵循的標準.
接口的語法: (JDK7.0)
(1) 關(guān)鍵字:interface
(2) 語法: interface 接口名{}
(3) 接口編譯之后會生成對應(yīng)的 .class文件
(4) 接口不能創(chuàng)建對象,但是可以聲明引用 接口名 引用名;
(5) 接口中沒有構(gòu)造方法
(6) 接口中所有的屬性都是公開的靜態(tài)常量
(默認被:public static final)
(7) 接口中所有的方法都是公開抽象方法
(默認被:public abstract修飾)
注意:接口中的方法默認訪問權(quán)限為public;
類中方法默認訪問權(quán)限是 default
接口的實現(xiàn)類:
語法:
class 類名 implements 接口名{}
注意:實現(xiàn)的關(guān)鍵字為 implements
(1) 如果實現(xiàn)類不想成為抽象類,必須覆蓋(實現(xiàn))接口中所有的方法
(2) 實現(xiàn)類中覆蓋接口中的方法時,訪問權(quán)限必須是public
使用:
(1) 接口類型的引用中,只能存儲對應(yīng)實現(xiàn)類的對象,體現(xiàn)多態(tài)的應(yīng)用
(2) 語法:
接口名 引用名 = new 實現(xiàn)類類名(實參);
注意:一個接口可以定義多個實現(xiàn)類
接口的繼承性:(很重要哦~)
接口與接口之間為多繼承的關(guān)系
(1) 一個接口可以同時繼承多個父接口
(2) 語法:
interface 接口名 extends 父接口名1,父接口名2{}
類與接口之間為多實現(xiàn)的關(guān)系
(1) 一個類可以同時實現(xiàn)多個接口
(2) 語法:
class 類名 implements 接口名1,接口名2{}
(3) 一個類同時實現(xiàn)多個接口,不想成為抽象類,則需要實現(xiàn)所有接口中所有方法
(包括所實現(xiàn)接口的父接口中的方法)
一個類實現(xiàn)多個接口的同時還有可以繼承一個類
(1) 如果一個類繼承一個父類同時實現(xiàn)多個接口,必須先繼承,再實現(xiàn)
(2) 語法:
class 類名 extends 父類名 implements 父接口1,父接口2{}
注意:必須先 extends ,再 implements
類與類之間存在:單繼承------extends
類與接口之間存在:多實現(xiàn)------implements
接口與接口之間存在:多繼承------extends
接口的影響:
1.由于接口之間為多繼承的關(guān)系,同時類與接口之間是多實現(xiàn)的關(guān)系,所以讓多態(tài)更加多元化和復雜
2.如果強制類型轉(zhuǎn)換的雙方只要有一方為接口類型,則編譯一定通過,運行分以下兩種情況:
a.如果轉(zhuǎn)換的引用中存儲的實際對象類型是要轉(zhuǎn)換類型的一種,運行通過
b.如果轉(zhuǎn)換的引用中存儲的實際對象類型不是要轉(zhuǎn)換的一種,編譯通過,但是運行報錯,錯誤信息:
Java.lang.ClassCastException(類型轉(zhuǎn)換異常)
接口的語法: (JDK8.0)
(1) 默認方法:
a. public default 返回值類型 方法名(形參列表){
// 方法的實現(xiàn)部分
}
b. 注意:接口中方法被 default修飾代表,此方法允許帶有方法實現(xiàn)部分
c. 默認方法訪問權(quán)限 為 public
d. 默認方法允許被覆蓋,但是覆蓋時訪問修飾符為 public
(2) 靜態(tài)方法:
a. public static 返回值類型 方法名(形參列表){
// 方法的實現(xiàn)部分
}
b. 接口中靜態(tài)方法訪問權(quán)限是public
接口的語法: (JDK9.0)—(私有方法)
(1) 接口中從9.0開始,方法可以被 private修飾
(2) 語法:
private 返回值類型 方法名(形參列表){
// 方法的實現(xiàn)
}
(3) 私有方法供接口內(nèi)部使用,通常將其他方法的共同邏輯部分提取,減少代碼冗余
接口的分類
常量接口:
接口中只有屬性、沒有方法,應(yīng)用很少
空接口:
通常稱為標記接口,接口中沒有任何屬性和抽象;
例如:IO對象序列化時應(yīng)用
函數(shù)式接口:
接口中有且只有一個抽象方法(靜態(tài)和默認不關(guān)注),廣泛應(yīng)用在Lambda表達式中
抽象類和接口的區(qū)別? (要牢記哦~)
到此這篇關(guān)于Java詳細講解不同版本的接口語法和抽象類與接口的區(qū)別的文章就介紹到這了,更多相關(guān)Java 接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot實現(xiàn)高吞吐量異步處理詳解(適用于高并發(fā)場景)
這篇文章主要介紹了Springboot實現(xiàn)高吞吐量異步處理詳解(適用于高并發(fā)場景),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11IDEA 插件 mapper和xml互相跳轉(zhuǎn)操作
這篇文章主要介紹了IDEA 插件 mapper和xml互相跳轉(zhuǎn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02Java實現(xiàn)json數(shù)據(jù)處理的常用腳本分享
這篇文章主要為大家詳細介紹了Java實現(xiàn)json數(shù)據(jù)處理的常用腳本,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以學習一下2023-03-03vscode開發(fā)maven的javaweb項目并部署到tomcat及配置指南
這篇文章主要給大家介紹了關(guān)于vscode開發(fā)maven的javaweb項目并部署到tomcat及配置的相關(guān)資料,在vscode中創(chuàng)建maven項目,需要逐一操作下面的環(huán)節(jié),文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-12-12Spring boot連接MySQL 8.0可能出現(xiàn)的問題
這篇文章主要給大家介紹了關(guān)于Spring boot連接MySQL 8.0可能出現(xiàn)的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-10-10springboot整合redis過期key監(jiān)聽實現(xiàn)訂單過期的項目實踐
現(xiàn)在各種電商平臺都有自己的訂單過期時間設(shè)置,那么如何設(shè)置訂單時間過期呢,本文主要介紹了springboot整合redis過期key監(jiān)聽實現(xiàn)訂單過期的項目實踐,感興趣的可以了解一下2023-12-12