Habe folgende Situation:
Die Ausgabe der main-Methode lautet "B". Ich hätte aber mit "A" gerechnet. Schließlich caste ich ja b zu einem A, ich hätte gedacht, dass dann auch tatsächlich ein echtes Objekt vom Typ -A- draus wird - was aber nicht der Fall ist.
Warum ist das so?
Wie kann ich erreichen, dass in diesem Beispiel auf "b" die Funktion der Oberklasse A aufgerufen wird (ohne die Klassen an sich zu ändern)?
Vielen Dank schonmal!
Java:
public class A {
public String method() { return "A"; }
}
public class B extends A {
public String method() { return "B"; }
}
public class MainClass {
public static void main(String[] args) {
A a = new A();
B b = new B();
a = (A) b;
System.out.println(b.method()); //Ausgabe: "B". Warum?
}
}
Warum ist das so?
Wie kann ich erreichen, dass in diesem Beispiel auf "b" die Funktion der Oberklasse A aufgerufen wird (ohne die Klassen an sich zu ändern)?
Vielen Dank schonmal!