Java Schulung - Jens.Trapp@DLR.De - August 1996

Casting von Objecten


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