Java接口默認方法帶來的問題分析【二義性問題】
本文實例分析了Java接口默認方法帶來的問題。分享給大家供大家參考,具體如下:
一 點睛
Java 8中,如果一個類實現(xiàn)兩個或多個接口,即“變相”的多繼承,但是若其中兩個接口都包含一個名字相同的default方法,會出現(xiàn)二義性問題。
二 實戰(zhàn)
1 代碼
interface faceA //定義接口faceA
{
void someMethod( );
default public void DefaultMethod( )//定義接口中默認方法
{
System.out.println("Default method in the interface A");
}
}
interface faceB //定義接口faceB
{
default public void DefaultMethod( )//定義接口InterfaceB中同名的默認方法
{
System.out.println("Default method in the interface B");
}
}
class DefaultMethodClass implements faceA,faceB //定義子類實現(xiàn)接口InterfaceA, InterfaceB
{ public void someMethod( ) //實現(xiàn)接口InterfaceA的抽象方法
{
System.out.println("Some method in the subclass");
}
}
public class Interfacsamedefaults
{
public static void main(String[] args)
{
DefaultMethodClass def = new DefaultMethodClass( );
def.someMethod(); //調用抽象方法
def.DefaultMethod(); //調用默認方法
}
}
2 運行

3 說明
實例化子類DefaultMethodClass的對象時,編譯器不知道應該在兩個同名的default方法中選擇哪一個,因此產生了二義性。因此,一個類實現(xiàn)多個接口時,若接口中有默認方法,不能出現(xiàn)同名的方法。
Java之所以禁止多繼承,就是想避免類似的二義性。但是接口中允許實現(xiàn)默認方法,又回到“二義性”的災難之門。
更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
springboot高并發(fā)下提高吞吐量的實現(xiàn)
這篇文章主要介紹了springboot高并發(fā)下提高吞吐量的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11
Spring中的@EnableScheduling定時任務注解
這篇文章主要介紹了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一個注解,用于啟用 Spring 的定時任務功能,通過使用這個注解,可以在 Spring 應用程序中創(chuàng)建定時任務,需要的朋友可以參考下2024-01-01
springboot+kafka中@KafkaListener動態(tài)指定多個topic問題
這篇文章主要介紹了springboot+kafka中@KafkaListener動態(tài)指定多個topic問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

