Verständnis Vererbung

Slitherbites

Mitglied
Hallo und zwar geht es zur Verständnis der Vererbung von diesem Code
Code:
public static void main(String[] args) {
B obj =  new B();
System.out.println(obj.calc(obj.calc(2)));
}
public class A {
   public A(){
   System.out.println("A");
}
public long calc(int i){
   System.out.println("B");
   return i*i;
}
}

public class B extends A{
       public B(){
           System.out.println("C");
       }
      
       public long calc(long i){
           System.out.println("D");
          
           return i*i*i;
       }      
   }

Als ergebnis kommt
A
C
B
D
64 Raus

Nun verstehe ich nicht wieso es zur calc Methode von A springt und danach zur B .
Also wieso ist der erste rechenschritt der von A und nicht von B?
 
Zuletzt bearbeitet:
Die Instanz "obj" (bzw. "class B") hat zwei unterschiedliche (Signatur!) calc-Funktionen, einmal die von "class A", die einen Integerwert als Parameter nimmt und zum anderen die von "class B", die einen Longwert als Parameter nimmt. In der main wird eine Funktion "calc" mit einem Integer aufgerufen und das ist nunmal die von "class A". Als Ergebnis liefert diese einen Longwert, der als Parameter für die zweite Funktion von "class B" dient.
 

Zurück
Oben