Ich habe drei Klassen namens A, B und Test-Klasse und jede Klasse verfügt über drei Methoden wie im folgenden Code. Jetzt erstelle ich aus der Klasse Test ein Objekt der Klasse B und lege es in A, welches die Elternklasse ist. Jetzt wird die Methode von A nicht aufgerufen, aber die Methode von B wird aufgerufen, warum? Auch wenn ich die Methoden als statisch mache, wird die Methode der Klasse A aufgerufen. Was ist der Grund dafür?Aufruf von Methoden in Multilevel-Vererbung
class A {
void test1() {
System.out.println("hello");
}
}
class B extends A {
void test1() {
System.out.println("From B class");
}
}
class Test extends B{
public static void main(String args[]){
A obj=new B();
obj.test1();
}
public void test1(){
System.out.println("from Test class");
}
}
Polymorphismus ist der Grund .. 'obj' ist definiert als' A', bezieht sich aber auf eine Instanz von 'B', daher' obj.test1() 'ruft' B # test1' auf. Und da 'statische' Methoden nicht überschrieben werden, rufen sie 'obj.test1' auf (während es technisch' A.test1' sein sollte), wobei 'A # test1' statisch ist und' obj' als 'A' definiert ist Ein # test1'. – SomeJavaGuy