PG 2.7 Polymorphie Flashcards
Upcasting
-Wenn man Ober- und Unterklassen hat kann man
-Eine Refernz die normalerweise ein Objekt der Unterklasse ist auch ohne Probleme auf ein Objekt der Oberklasse zuweisen
-Unterklassen Referenzen sind immer kompatibel zu ihrer Oberklasse
class Pkw { }
class Coupé extends Pkw { }
class Test {
public static void main(String[] args) {
Pkw p = new Pkw ();
Coupé c = new Coupé();
p = c; // Upcast
}
}
Warum funktioniert Upcasting?
- weil im Unterklassenobjekt das Oberklassenobjekt immer vollständig enthalten ist
- Es kommt höchstens zum Verlust von Attributen und Methoden, aber nicht zum Hinzufügen
frühes vs spätes Binden
In C werden aufzurufenden Funktionen vom Compiler bestimmt (frühes Binden)
In Java werden aufzurufenden Methoden zur Laufzeit bestimmt (spätes Binden)
=> überschriebene Methode Entscheidung zur Laufzeit anhand des referenzierten Objekts , ob die Unter- oder Oberklassenmethode gemeint ist
Polymorphie und abstrakte Klassen
abstrakte Methoden gut geeignet für Polymorphie , weil unterschiedliche Implementierungen erst zur Laufzeit bestimmt ausgewählt wird.
Downcasting
Man kann eine Oberklasse nur schlecht in eine Unterklasse verwandeln , höchstens mit expliziter Typkonversion (casts) und auch dann entstehen evtl. Laufzeitfehler
Der Operator instanceof
testet of das objekt auf der linken seite vom typ auf der rechten seite angegeben ist, entspricht => schlechter Coding style