2012-04-09 31 views
0

這裏是我有問題的代碼:爲什麼我的接口類型對象不會執行未在接口中聲明的方法?

接口:

public interface anInterface { 

    void printSomething(); 

} 

類實現接口:

public class aClass implements anInterface { 

    public aClass() { 

    } 

    public void printSomethingElse() { 
     System.out.println("Something else"); 
    } 

    @Override 
    public void printSomething() { 
     System.out.println("Something"); 
    } 
} 

和主要功能:

public static void main(String[] args) { 
    anInterface object = new aClass(); 
    object.printSomething(); // works fine 
    object.printSomethingElse();  // error 
} 

錯誤:找不到符號。 符號:method printSomethingElse();

有人可以告訴我爲什麼這不起作用嗎?

是否有可能在Java中,當你有一個實現了某個接口的類時,向該類添加方法,即使這些方法沒有在接口中聲明?還是必須聲明我將在界面中使用的所有方法?

我也試過它在C#中,也不工作。

我在做什麼錯?

謝謝!

回答

3

您必須在界面中聲明您想要使用的所有方法。該接口對printSomethingElse一無所知,這就是爲什麼你會得到上述錯誤。

接口的目的是讓您可以在多個類似實現的類中使用通用函數列表。例如,List是一個接口,其中包含由不同類別實現的各種功能的「列表」,例如LinkedList,其使用雙鏈表來提供使用動態擴展陣列的ListArrayList的功能。

相關問題