2012-04-09 6 views
0

Hier ist der Code Ich habe Probleme mit mit:Warum werden von meiner Schnittstelle eingegebene Objekte keine Methoden ausführen, die nicht in der Schnittstelle deklariert sind?

Die Schnittstelle:

public interface anInterface { 

    void printSomething(); 

} 

Klasse, die die Schnittstelle implementiert:

public class aClass implements anInterface { 

    public aClass() { 

    } 

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

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

Und die Hauptfunktion:

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

Fehler: Kann kein Symbol finden. Symbol: Methode printSomethingElse();

Kann mir jemand sagen, warum das nicht funktioniert?

Ist es in Java möglich, einer Klasse, die eine Schnittstelle implementiert, Methoden zu dieser Klasse hinzuzufügen, obwohl diese Methoden nicht in der Schnittstelle deklariert wurden? Oder muss ich ALLE Methoden erklären, die ich in der Schnittstelle benutzen werde?

Ich habe es auch in C# versucht und funktioniert auch nicht.

Was mache ich falsch?

Danke !!!

Antwort

3

Sie müssen alle Methoden, die Sie in diesem Fall verwenden möchten, in der Schnittstelle deklarieren. Die Schnittstelle weiß nichts von printSomethingElse und deshalb erhalten Sie den obigen Fehler.

Der Zweck einer Schnittstelle ist, dass Sie eine gemeinsame Liste von Funktionen über mehrere ähnlich implementierte Klassen haben können. Zum Beispiel ist List eine Schnittstelle, die eine "Liste" von Funktionen enthält, die auf verschiedene Arten von verschiedenen Klassen wie LinkedList implementiert wurden, die eine Doubly-Linked-Liste verwenden, um die Funktionalität von List und ArrayList bereitzustellen, die ein dynamisch expandierendes Array dazu verwendet.