說到接口,USB大家肯定不陌生~
接口是一種標準、規範.
注意:接口一旦制定好,用戶和實現者都必須遵循的標準.
(1) 關鍵字:interface
(2) 語法: interface 介面名稱{}
(3) 介面編譯之後會產生對應的.class檔
(4) 介面不能建立對象,但是可以宣告引用介面名稱引用名稱;
(5) 介面中沒有建構方法
#(6 ) 介面中所有的屬性都是公開的靜態常數
(預設為:public static final)
(7) 介面中所有的方法都是公開抽象方法
(預設為:public abstract修飾)
注意:介面中的方法預設存取權為public;
類別中方法預設存取權是default
#介面的實作類別:
# 語法:
一項一項介面的實作類別:
注意:實作的關鍵字為implements
(1) 若實作類別不想成為抽象類,則必須覆寫(實作)介面中所有的方法(2) 實作類別中覆寫介面中的方法時,存取權限必須是public(2) 語法:使用:
(1) 介面類型的參考中,只能儲存對應實作類別的對象,體現多型態的應用
介面名稱參考名稱= new 實作類別名稱(實參);
# 注意:一個介面可以定義多個實作類別介面的繼承性:(很重要哦~)介面與介面之間為多繼承的關係
(1) 一個接口可以同時繼承多個父介面
(2) 語法:
(1) 一個類別可以同時實作多個介面
(2) 語法:
class 類別名implements 介面名稱1,介面名稱2{}
(包括所實作介面的父介面中的方法)
一個類別實作多個介面的同時還有可以繼承一個類別# class 類別名稱extends 父類別名稱implements 父介面1,父介面2{}(2) 語法:
(1) 如果一個類別繼承一個父類別同時實作多個介面,必須先繼承,再實作
注意:必須先extends ,再implements
類別與類別之間存在:單一繼承------extends
類別與介面之間存在:多重實作-- ----implements介面的影響:#######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 傳回值型別方法名稱(形參列表){ ### 與值型法// 方法的實作 ### # // 方法的實作 #// 方法的實作 # # } ######
介面與介面之間存在:多重繼承------extends
(3) 私有方法供介面內部使用,通常將其他方法的共同邏輯部分提取,減少程式碼冗餘
接口中只有屬性、沒有方法,應用很少
通常稱為標記接口,接口中沒有任何屬性和抽象;
例如:IO物件序列化時應用
介面中有且只有一個抽象方法(靜態與預設不關注),廣泛應用在Lambda表達式中
抽象類別和介面的差別? (要牢記哦~)
以上是Java版本間接口語語法的差異與抽象類別與介面的異同的詳細內容。更多資訊請關注PHP中文網其他相關文章!