一千萬個為什麽

搜索

Java - 接口實現中的方法名稱沖突

如果我有兩個接口,兩者的用途完全不同,但是使用相同的方法簽名,如何在不強制編寫一個為兩個接口服務的單個方法並在方法中編寫一些復雜邏輯的情況下創建一個類實現檢查正在進行調用的對象類型並調用正確代碼的實現?

在C#中,這被稱為顯式接口實現所克服。 Java中有沒有相同的方法?

最佳答案

不,沒有辦法在Java中的一個類中以兩種不同的方式實現相同的方法。

這可能導致許多令人困惑的情況,這就是Java禁止它的原因。

interface ISomething {
    void doSomething();
}

interface ISomething2 {
    void doSomething();
}

class Impl implements ISomething, ISomething2 {
   void doSomething() {}//There can only be one implementation of this method.
}

你可以做的是用兩個類組成一個類,每個類實現一個不同的接口。然後那個類將具有兩個接口的行為。

class CompositeClass {
    ISomething class1;
    ISomething2 class2;
    void doSomething1(){class1.doSomething();}
    void doSomething2(){class2.doSomething();}
}

轉載註明原文: Java - 接口實現中的方法名稱沖突