Ein Objekt einer abgeleiteten Klasse kann wie das Objekt der Superklasse behandelt werden.
public class TestPunkt { public static void main(String argv[]) { Punkt3D p = new Punkt3D(); p.setzen(1, 1, 1); System.out.println("Länge p: "+ p.Laenge_berechnen()); Punkt2D q = new Punkt2D(); q.setzen((Punkt2D)p); System.out.println("Länge q: "+ q.Laenge_berechnen()); } }
Ergebnis:
p ist gleichzeitig eine Instanz von den Klassen Punkt3D und Punkt2D. Darum kann p auch als Punkt2D aufgefaßt werden. Dazu ist eine Typkonvertierung ( cast) notwendig.
Als Cast-Operator dienen Klammern, die den neuen Typ enthalten.
Falsch ist dagegen die Umkehrung:
... Punkt3D r = new Punkt3D(); r.setzen((Punkt3D)q); System.out.println("Länge : "+ r.Laenge_berechnen()); ...
Dies führt zu einem Fehler: java.lang.ClassCastException