Polymorphismus
Instrument[] band = {new Gitarre(), new Trommel()}; for (Instrument i : band) i.spielen(); – Instrument gibt „Ton“ aus, Gitarre „Schrumm“, Trommel „Bumm“. Was erscheint?
Erklärung: Polymorphismus: Objekte verschiedener Unterklassen reagieren auf denselben Methodenaufruf unterschiedlich. Zur Laufzeit wird die überschriebene Methode des tatsächlichen Objekts ausgeführt – nicht die der Oberklasse. Ein Array vom Typ der Oberklasse darf Objekte der Unterklassen enthalten.
Wenn eine Unterklasse eine Methode der Oberklasse mit einer eigenen Implementierung versieht, nennt man das ___ der Methode.
Erklärung: Methoden-Überschreiben (Override): Die Unterklasse definiert eine Methode mit gleichem Namen und gleicher Signatur wie die Oberklasse, aber mit anderem Verhalten. Zur Laufzeit wird die Methode der tatsächlichen Klasse aufgerufen.
Bei der Vererbung erbt eine Unterklasse alle Attribute und Methoden der Oberklasse.
Erklärung: Richtig. Die Unterklasse (Subklasse) erbt Attribute und Methoden der Oberklasse (Superklasse). Sie kann eigene hinzufügen oder geerbte Methoden überschreiben. Beispiel: Sportvereinsmitglied erbt von Mitglied.
Was ist eine 'Generalisierungshierarchie'?
Erklärung: Beispiel: Oberklasse 'Tier' → Unterklassen 'Hund', 'Katze', 'Fisch'. Oder: 'Mitglied' → 'Schwimmer', 'Tennisspieler'. Gemeinsame Eigenschaften stehen in der Oberklasse, spezielle in den Unterklassen.
Ein Sportverein hat verschiedene Sparten (Tennis, Schwimmen, Fußball) mit unterschiedlichen Beiträgen. Wie lässt sich dies mit Polymorphismus lösen?
Erklärung: Polymorphismus vermeidet lange if-else-Ketten: Jede Unterklasse implementiert berechneBeitrag() passend. Bei mitglied.berechneBeitrag() wird automatisch die richtige Methode des tatsächlichen Typs aufgerufen.
Das SchlĂĽsselwort '___ ' in Java zeigt an, dass eine Klasse von einer anderen Klasse erbt.
Erklärung: Syntax: class Hund extends Tier { ... }. Hund erbt alle Attribute und Methoden von Tier und kann eigene hinzufügen oder Methoden überschreiben.
Dank Polymorphismus kann man ein Array vom Typ der Oberklasse anlegen und darin Objekte verschiedener Unterklassen speichern.
Erklärung: Richtig. Tier[] tiere = new Tier[3]; tiere[0] = new Hund(); tiere[1] = new Katze(); — Das Array enthält verschiedene Unterklassen. Beim Aufruf tiere[i].gibLaut() wird jeweils die spezifische Methode aufgerufen.
Was versteht man unter 'dynamischer Bindung' (late binding)?
Erklärung: Beispiel: Tier t = new Hund(); t.gibLaut(); — Der deklarierte Typ ist Tier, aber zur Laufzeit wird die Methode gibLaut() der Klasse Hund aufgerufen, da das Objekt tatsächlich ein Hund ist.
Welcher Vorteil hat Vererbung in der Softwareentwicklung?
Erklärung: Vererbung vermeidet Codeduplizierung: Attribute und Methoden, die für alle Unterklassen gelten, stehen einmal in der Oberklasse. Änderungen müssen nur an einer Stelle vorgenommen werden.
Eine Methode, die in der Oberklasse definiert und in einer Unterklasse mit neuem Verhalten versehen wird, muss die gleiche ___ (Name, Parameter, RĂĽckgabetyp) haben.
Erklärung: Beim Überschreiben muss die Methode in der Unterklasse exakt die gleiche Signatur haben wie in der Oberklasse. Andernfalls handelt es sich um Überladen (Overloading, verschiedene Parameter), nicht um Überschreiben (Overriding).
Polymorphismus macht Programme flexibler und leichter erweiterbar.
Erklärung: Richtig. Neue Unterklassen können hinzugefügt werden, ohne bestehenden Code zu ändern. Beispiel: Eine neue Sparte 'Handball' im Sportverein — einfach eine neue Unterklasse erstellen und berechneBeitrag() implementieren.
Welches Methodenpaar ist eine Ăśberladung (Overload)?
Erklärung: Überladen: gleicher Methodenname, aber verschiedene Parameter in derselben Klasse. Überschreiben: gleiche Signatur in Ober- und Unterklasse (lautGeben in Tier und Hund). Zwei Methoden mit verschiedenen Namen sind weder überladen noch überschrieben.
Gegeben: Klasse 'Figur' mit Methode berechneFlaeche(). Unterklassen: Kreis, Rechteck, Dreieck. Was passiert bei: Figur f = new Kreis(5); f.berechneFlaeche()?
Erklärung: Durch dynamische Bindung wird zur Laufzeit die Methode des tatsächlichen Objekttyps (Kreis) aufgerufen, nicht die des deklarierten Typs (Figur). Das ist der Kern des Polymorphismus.
In einem UML-Klassendiagramm wird die Vererbungsbeziehung durch einen Pfeil mit einer ___ Spitze (dreieckig, nicht ausgefĂĽllt) dargestellt.
Erklärung: Im UML-Klassendiagramm zeigt ein Pfeil mit offener (hohler) dreieckiger Spitze von der Unterklasse zur Oberklasse. Assoziationen werden durch einfache Linien dargestellt, oft mit Kardinalitäten.
Warum sollte man Polymorphismus statt langer if-else- oder switch-Ketten verwenden?
Erklärung: Mit if-else müsste man für jeden neuen Typ eine Verzweigung hinzufügen. Mit Polymorphismus erstellt man einfach eine neue Unterklasse — der bestehende Code (z. B. Schleifen über ein Figur-Array) funktioniert ohne Änderung.