Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
InterfaceWieso Aufruf aller Methoden eines Interfaces?
Hallo zusammen,
wieso werden in Java eigentlich alle Methoden eines Interfaces aufgerufen sobald das Interface und seine Methoden in einer Klasse implementiert sind und die Klasse selbst instantiiert wird?
Naja, wenn ich das Interface Comparable in einer Klasse A implementiere , wird bei instanzierung dieser Klasse A automatisch die Methode compareTo aufgerufen ohne sie explizit aufgerufen zu haben. Selbige gilt für die Methode toString, obwohl die nur überschrieben wird nach Vererbung.
Was genau meinst du damit "die Methoden direkt aufgerufen werden"? Meinst du, dass die Methoden ausgeführt werden? Oder, dass man unbedingt alle Methoden des Interfaces in die implementierenden Klassen angelegt haben muss?
public class Tesss
{
public static void main(String[] args)
{
Clazz clazz = new Clazz();
}
}
public interface Interface
{
public void printA();
public void printB();
public void printC();
}
public class Clazz implements Interface
{
@Override
public void printA()
{
System.out.println("A");
}
@Override
public void printB()
{
System.out.println("B");
}
@Override
public void printC()
{
System.out.println("C");
}
}
Ich bin gerade nicht an einem Rechner wo ich das testen könnte aber als Beispiel die toString Methode. Auch wenn es kein Interface ist sondern nur überschrieben wird.
Aber dort wird doch nichts automatisch aufgerufen?
Angenommen wir haben folgende Testklasse.
Java:
class Child {
@Override
public String toString() { return "This is Child#toString()"; }
}
Nur weil ich von dieser Klasse ein Objekt erzeuge, wird doch nicht automatisch die toString() Methode aufgerufen.
Java:
Child c = new Child();
Du würdest keinerlei Ausgabe oder sonstige Interaktion wahr nehmen.
Wenn du c jetzt auf der Konsole via System.out.println(c) ausgeben würdest, dann würde "automatisch" die Methode toString() aufgerufen werden. Wobei "automatisch" nur heißt, dass in der println(Object o) Methode auch nur die toString() Methode explizit aufgerufen wird.
Ohne Beispiel wird es schwer herauszufinden was genau passiert.
Die toString() Methode einer Klasse wird z.B. ausgeführt sobald ein System.out.println(meinObjekt); gemacht wird. Auch wenn man nicht selber meinObjekt.toString() an die println() Methode übergibt.
Sorry für die Umstände. Habe durch die prints gedacht die Methoden würden bei Instantiierung implizit aufgerufen. So verhält sich das auch mit meinem Interface. Mir ist das nie aufgefallen bei meinen prints in den jeweiligen Methoden, nur gestern war ich komplett verwirrt warum das passiert.