W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
接口可以從另一個接口繼承。與類不同,接口可以從多個接口繼承。
interface Singer { void sing(); void setRate(double rate); double getRate(); } interface Writer { void write(); void setRate(double rate); double getRate(); } interface Player { void play(); void setRate(double rate); default double getRate() { return 300.0; } }
一個接口使用關(guān)鍵字extends來繼承自其他接口。關(guān)鍵字extends之后是以逗號分隔的繼承接口名稱列表。
繼承的接口稱為超級接口,繼承接口的接口稱為子接口。
接口繼承其超級接口的以下成員:
接口不從其超級接口繼承靜態(tài)方法。
接口可以重寫它從其超級接口繼承的繼承的抽象和默認方法。
如果超級接口和子接口具有相同名稱的字段和嵌套類型,則子接口獲勝。
interface A { String s = "A"; } interface B extends A { String s = "B"; } public class Main { public static void main(String[] argv){ System.out.println(B.s); } }
以下代碼顯示如何重寫默認方法。
interface A { default String getValue(){ return "A"; } } interface B extends A { default String getValue(){ return "B"; } } class MyClass implements B{ } public class Main { public static void main(String[] argv){ System.out.println(new MyClass().getValue()); } }
上面的代碼生成以下結(jié)果。
引入默認方法使得類可以從其超類和超級接口繼承沖突的實現(xiàn)。
Java使用三個簡單的規(guī)則為了解決沖突。
我們可以使用instanceof運算符來評估引用類型變量是指特定類的對象還是其類實現(xiàn)特定接口。
instanceof運算符的一般語法是
referenceVariable instanceof ReferenceType
interface A { default String getValue(){ return "A"; } } interface B { default String getValue(){ return "B"; } } class MyClass implements B,A{ public String getValue(){ return "B"; } } public class Main { public static void main(String[] argv){ MyClass myClass = new MyClass(); System.out.println(myClass instanceof MyClass); System.out.println(myClass instanceof A); System.out.println(myClass instanceof B); } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: