Polymorphismus
Polymorphism
Überschreibt eine Unterklasse eine Methode der Oberklasse, so führt ein Aufruf über eine Oberklassen-Referenz zur Laufzeit die Methode des TATSÄCHLICHEN Objekts aus — dynamische Bindung. Die Kernfrage lautet damit immer „Was ist das Objekt wirklich?", nicht „Wie ist die Variable deklariert?"; genau diese Verwechslung ist die dokumentierte Hürde. Ist sie überwunden, lassen sich heterogene Sammlungen (Tier/Hund/Katze) einheitlich behandeln, obwohl jedes Objekt seine eigene Methodenfassung mitbringt.
Voraussetzungen (1)
Ermöglicht (2)
Instrument[] band = {new Gitarre(), new Trommel()}; for (Instrument i : band) i.spielen(); – Instrument gibt „Ton“ aus, Gitarre „Schrumm“, Trommel „Bumm“. Was erscheint?
Wenn eine Unterklasse eine Methode der Oberklasse mit einer eigenen Implementierung versieht, nennt man das ___ der Methode.
Bei der Vererbung erbt eine Unterklasse alle Attribute und Methoden der Oberklasse.
Das SchlĂĽsselwort '___ ' in Java zeigt an, dass eine Klasse von einer anderen Klasse erbt.
Welcher Vorteil hat Vererbung in der Softwareentwicklung?
Polymorphismus macht Programme flexibler und leichter erweiterbar.
Was ist eine 'Generalisierungshierarchie'?
Ein Sportverein hat verschiedene Sparten (Tennis, Schwimmen, Fußball) mit unterschiedlichen Beiträgen. Wie lässt sich dies mit Polymorphismus lösen?
Dank Polymorphismus kann man ein Array vom Typ der Oberklasse anlegen und darin Objekte verschiedener Unterklassen speichern.
Was versteht man unter 'dynamischer Bindung' (late binding)?
Eine Methode, die in der Oberklasse definiert und in einer Unterklasse mit neuem Verhalten versehen wird, muss die gleiche ___ (Name, Parameter, RĂĽckgabetyp) haben.
Welches Methodenpaar ist eine Ăśberladung (Overload)?
Gegeben: Klasse 'Figur' mit Methode berechneFlaeche(). Unterklassen: Kreis, Rechteck, Dreieck. Was passiert bei: Figur f = new Kreis(5); f.berechneFlaeche()?
In einem UML-Klassendiagramm wird die Vererbungsbeziehung durch einen Pfeil mit einer ___ Spitze (dreieckig, nicht ausgefĂĽllt) dargestellt.
Warum sollte man Polymorphismus statt langer if-else- oder switch-Ketten verwenden?