首頁 >Java >java教程 >Java版本間接口語語法的差異與抽象類別與介面的異同

Java版本間接口語語法的差異與抽象類別與介面的異同

PHPz
PHPz轉載
2023-05-06 14:52:131220瀏覽

什麼是介面?

說到接口,USB大家肯定不陌生~
接口是一種標準、規範.
注意:接口一旦制定好,用戶和實現者都必須遵循的標準.

Java版本間接口語語法的差異與抽象類別與介面的異同

介面的語法: (JDK7.0)

(1) 關鍵字:interface 
(2) 語法:  interface 介面名稱{} 
(3) 介面編譯之後會產生對應的.class檔 
(4) 介面不能建立對象,但是可以宣告引用介面名稱引用名稱; 
(5) 介面中沒有建構方法 
#(6 ) 介面中所有的屬性都是公開的靜態常數
    (預設為:public static final) 
(7) 介面中所有的方法都是公開抽象方法
    (預設為:public abstract修飾)
    注意:介面中的方法預設存取權為public; 
         類別中方法預設存取權是default

#介面的實作類別:

# 語法:







一項一項介面的實作類別:

##class 類別名稱implements 介面名稱{} 

注意:實作的關鍵字為implements 

(1) 若實作類別不想成為抽象類,則必須覆寫(實作)介面中所有的方法 
(2) 實作類別中覆寫介面中的方法時,存取權限必須是public

使用:

(1) 介面類型的參考中,只能儲存對應實作類別的對象,體現多型態的應用 
(2) 語法:

    介面名稱參考名稱= new 實作類別名稱(實參); 

#    注意:一個介面可以定義多個實作類別

介面的繼承性:(很重要哦~)

介面與介面之間為多繼承的關係


(1) 一個接口可以同時繼承多個父介面 

(2) 語法: 

    interface 介面名稱extends 父介面名稱1,父介面名稱2{}

#類別與介面之間為多實現的關係

(1) 一個類別可以同時實作多個介面 

(2) 語法: 

    class 類別名implements 介面名稱1,介面名稱2{} 

(3) 一個類別同時實作多個接口,不想成為抽象類,則需要實作所有介面中所有方法 

    (包括所實作介面的父介面中的方法)

一個類別實作多個介面的同時還有可以繼承一個類別


(1) 如果一個類別繼承一個父類別同時實作多個介面,必須先繼承,再實作 

(2) 語法: 

#    class 類別名稱extends 父類別名稱implements 父介面1,父介面2{} 

    注意:必須先extends ,再implements 

類別與類別之間存在:單一繼承------extends

類別與介面之間存在:多重實作-- ----implements


介面與介面之間存在:多重繼承------extends

介面的影響:#######1.由於介面之間為多繼承的關係,同時類別與介面之間是多實現的關係,所以讓多態更加多元化和複雜###2.如果強制類型轉換的雙方只要有一方為介面類型,則編譯一定通過,運行分以下兩種情況:###  a.如果轉換的引用中儲存的實際物件類型是要轉換類型的一種,執行透過 ###  b.如果轉換的引用中儲存的實際物件類型不是要轉換的一種,編譯通過,但是運行報錯,錯誤訊息:###    Java.lang.ClassCastException(類型轉換例外)######介面的語法: (JDK8.0)#######(1)預設方法: #########    a. public default 傳回值型別方法名稱(形參考文獻){ ###            // 方法的實作. 注意:介面中方法被default修飾代表,此方法允許帶有方法實現部分 ###    c. 預設方法存取權為public ###    d. 預設方法允許被覆寫,但在覆寫時存取修飾符為public # #####(2) 靜態方法: ########    a. public static 傳回值型別方法名稱(形參考表){ ###            // 方法的實作部分#######    b. 介面中靜態方法存取權限是public###### 介面的語法:(JDK9.0)—(私有方法)#######(1) 介面中從9.0開始,方法可以被private修飾 ######(2) 語法: #########    private 傳回值型別方法名稱(形參列表){ ###      與值型法// 方法的實作 ###  #     // 方法的實作 #// 方法的實作 # #    } ######

(3) 私有方法供介面內部使用,通常將其他方法的共同邏輯部分提取,減少程式碼冗餘

介面的分類

常數介面:

接口中只有屬性、沒有方法,應用很少

空接口:

通常稱為標記接口,接口中沒有任何屬性和抽象;
例如:IO物件序列化時應用

函數式介面:

介面中有且只有一個抽象方法(靜態與預設不關注),廣泛應用在Lambda表達式中

抽象類別和介面的差別? (要牢記哦~)

Java版本間接口語語法的差異與抽象類別與介面的異同

以上是Java版本間接口語語法的差異與抽象類別與介面的異同的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除