Hallo, ich hätte mal eine Frage an alle, die sich sehr gut mit Vererbung in Java auskennen.
Wir hatten vor Kurzem in einer Klausur folgende Aufgabe von einer Vaterklasse mit den
Methoden input() und output() zwei Sohnklassen abzuleiten, die diese Methoden überschreiben.
Soweit alles klar, danach sollte ein Array abwechselnd mit Objekten der beiden Sohnklassen
gefüllt werden. hier war nun der Lösungsansatz:
Nun habe ich ja hier einen impliziten Up-Cast vorgenommen, d.h. eine Referenz auf ein Sohnobjekt
wurde einer Referenz auf ein Vaterobjekt zugewiesen. Nun dachte ich könnte man aber nur auf die
Vateranteile der einzelnen Objekte zugreifen. Das Programm führte jedoch ohne Probleme die von den
Sohnklassen überschriebenen Methoden input() und output() aus und das verstehe ich nicht so recht ?
Woher will denn der Compiler jetzt wissen, von welchem Typ das Objekt wirklich ist, auf das die
Referenzvariable vom Typ Vater zeigt ?
Wir hatten vor Kurzem in einer Klausur folgende Aufgabe von einer Vaterklasse mit den
Methoden input() und output() zwei Sohnklassen abzuleiten, die diese Methoden überschreiben.
Soweit alles klar, danach sollte ein Array abwechselnd mit Objekten der beiden Sohnklassen
gefüllt werden. hier war nun der Lösungsansatz:
Code:
Vater[] arr = new Vater[2][3];
arr[0][1] = new SohnA ();
arr[0][2] = new SohnB ();
...
wurde einer Referenz auf ein Vaterobjekt zugewiesen. Nun dachte ich könnte man aber nur auf die
Vateranteile der einzelnen Objekte zugreifen. Das Programm führte jedoch ohne Probleme die von den
Sohnklassen überschriebenen Methoden input() und output() aus und das verstehe ich nicht so recht ?
Woher will denn der Compiler jetzt wissen, von welchem Typ das Objekt wirklich ist, auf das die
Referenzvariable vom Typ Vater zeigt ?