Typecasting
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.
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 vorsichtig eingesetzt werden.
