Vertiefung der Programmierung

Type-Casting 

Wiederholung: Vererbung

<<abstract>>
Form

Kreis

Rechteck

Quadrat

pencil

live

đź§Ş Experimente zu Vererbung

Live
coding

Type-Casting

<<abstract>>
Form

Kreis

Rechteck

Quadrat

Upcasting

Downcasting

Upcasting: geht immer âž” implizit

Downcasting: eingeschränkt möglich ➔ nur explizit

↓ Downcasting

<<abstract>>
Form

Kreis

Rechteck

Quadrat

Downcasting

Form f = new Quadrat();

Quadrat q = (Quadrat) f;

Wir mĂĽssen wissen,
dass (Referenz) f aktuell auf ein Quadrat zeigt

explizites Casting

↑ Upcasting

<<abstract>>
Form

Kreis

Rechteck

Quadrat

Upcasting

Form f = new Quadrat();

Rechteck r = new Quadrat();

implizites Upcasting

⌨️ Type-Casting (Beispiele)

Live
coding

Definition: instanceof

variablenName instanceof Klassenname

instanceof fungiert hier als Operator

âž” Ergebnis: boolean (wahr/falsch)

instanceof-Operator (Beispiele)

Beim Downcasting sollte immer ĂĽberprĂĽft werden,
auf welches Objekt eine Referenz zeigt.

❌

Form form = new Rechteck();

println(((Kreis) form).getRadius());

 

Form form = new Kreis();

println(((Kreis) form).getRadius());


⚠️

Form form = new Kreis();

if (form instanceof Kreis) {

  println(((Kreis) form).getRadius());

}

 

âś…

Form form = new Rechteck();

if (form instanceof Kreis) {

  println(((Kreis) form).getRadius());

}

 

âś…

⌨️ instanceof-Operator (Beispiele)

Live
coding

Zusammenfassung

  • Type-Casting ermöglicht Konvertieren von
    Objekten entlang der Vererbungshierarchie

  • ↑Upcasting (von unten nach oben) geht immer

  • ↓Downcasting (von oben nach unten) geht nur explizit:

    • A a = (A) b; // b muss vom Typ A sein, sonst ❌

  • ​Type-Casting wird erst zur Laufzeit durchgefĂĽhrt

    • ​konkrete Typen unbedingt zur Laufzeit prĂĽfen
      → instanceof-Operator

Type Casting

By blackbill

Type Casting

  • 100