Typecasting

Aus FI-Wiki

Typecasting bezeichnet die Umwandlung eines Objekts von einem Datentyp in einen anderen. In der objektorientierten Programmierung wird Typecasting vor allem verwendet, um von einer Oberklasse auf eine Unterklasse zuzugreifen.

Arten von Typecasting

Upcasting

Beim Upcasting wird ein Objekt einer Unterklasse als Objekt der Oberklasse behandelt. Dies geschieht automatisch und ohne expliziten Cast (implizit).

Fahrzeug f = new Auto(); // Upcasting

Downcasting

Beim Downcasting wird ein Objekt der Oberklasse in eine Unterklasse umgewandelt. Dies muss explizit erfolgen und kann zu Fehlern führen.

Fahrzeug f = new Auto();
Auto a = (Auto) f; // Downcasting

Risiken

Beim Downcasting kann eine ClassCastException auftreten, wenn das Objekt nicht vom erwarteten Typ ist.

Fahrzeug f = new Motorrad();
Auto a = (Auto) f; // Fehler zur Laufzeit

Absicherung mit instanceof

Um Fehler zu vermeiden, sollte vor dem Downcasting geprüft werden, ob das Objekt tatsächlich vom gewünschten Typ ist.

if (f instanceof Auto) {
    Auto a = (Auto) f;
}

Einsatz

Typecasting ist sinnvoll, wenn auf spezielle Methoden einer Unterklasse zugegriffen werden soll, die in der Oberklasse nicht vorhanden sind.

Kurzmerksatz

Typecasting ermöglicht den Zugriff auf spezifisches Verhalten einer Unterklasse, sollte jedoch nur gezielt und sparsam eingesetzt werden.