= (Up Cast) ?= (Down CAST) Teil 2

Ziemlich alle Beschreibungen drücken sich um die genaue Begründung, daran merkt man, dass die meisten gar nicht wissen, was ein Cast ist.

Auto Oberklasse

LKW Unterklasse, hat zusätzlich noch die Eigenschaften der Ladefläche.

Auto = LKW (Das ist ein Upcast)

Die Eigenschaften des LKW gehen verloren, aber Auto kann abgefragt werden.

Oder anders formuliert.

Der Upcast ist ungefährlich, weil das Zielobjekt (aus der Oberklasse) nur mit Methoden und Attributen des des Zielobjektes abgefragt wird, die sowohl Zielobjekt als auch Quellobjekt (aus der Unterklasse) besitzen.

Der Downcast ist gefährlich, wenn das Zielobjekt (aus der Unterklasse) mit Methoden und Attributen abgefragt wird, die das Zielobjekt zwar nun besitzt, aber das Quellobjekt (aus der Oberklasse) nicht besessen hat.

LKW = Auto

Die Frage nach der Ladefläche des LKW kann nicht beantwortet werden.

Weiters: Die Unterklasse hat mehr Methoden und Attribute als die Oberklasse, weil sie die Methoden und Attribute ja geerbt hat und noch dazu zusätzliche hat.

Hier ein Beschreibung von Java, die es in meinen Augen allerdings auf den Punkt bringt.

http://www.scalingbits.com/java/javakurs1/polymorphie/casting

Der „Upcast“

Ein „Upcast“  ist eine Typkonversionen einer Instanz einer Unterklasse auf den Typ einer Oberklasse. Sie wurden bisher implizit in den vorhergehenden Beispielen verwendet, wie zum Beispiel bei der Klasse CircleIsPoint die aus der Klasse Point abgeleitet wurde:

import Point;
import CircleIsPoint;
...
 Point p1         = new Point (2.2, 3.3);
 CircleIsPoint c1 = new CircleIsPoint(4.4,5.5,6.6);

Point p2 = c1; //Das explizite Wissen über den Objekttyp CircleIsPoint geht verloren
...
p1.print();
p2.print();