erstellt 17.07.99; übersetzt 15.07.03; überarbeitet 25.02.03, 02.03.04, 22.02.05, 25.01.11; Deutsche Übersetzung Heinrich Gailer


Quiz über abstrakte Klassen und Polymorphie

Das ist ein Übungsquiz. Die Ergebnisse werden nirgendwo erfasst und haben keine Auswirkung auf Ihre Note. Die Fragen in diesem Quiz dürfen in keinem Quiz oder Test erscheinen, der für Ihre Benotung zählt.

Hinweise: Entscheiden Sie sich bei jeder Frage für die beste Antwort. Klicken Sie dann auf das entsprechende Optionskästchen, um diese Antwort auszuwählen. Sie können Ihre Antwort jederzeit ändern. Sobald das Quiz bewertet wird, erscheint die richtige Antwort in der Textbox unterhalb der Frage.


1. Was ist eine abstrakte Klasse?

a.    Eine abstrakte Klasse ist eine Klasse ohne Subklassen.
b.    Eine abstrakte Klasse ist jede Superklasse mit mehr als einer Subklasse.
c.    Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann.
d.    Eine abstrakte Klasse ist ein anderer Name für eine Basisklasse.


2. Was ist eine abstrakte Methode?

a.    Eine abstrakte Methode ist eine beliebige Methode in einer abstrakten Klasse.
b.    Eine abstrakte Methode ist eine Methode, die nicht geerbt werden kann.
c.    Eine abstrakte Methode ist eine Methode ohne Körper, die mit dem reservierten Wort abstract deklariert ist.
d.    Eine abstrakte Methode ist eine Methode in der Subklasse, die die Methode einer Superklasse überschreibt.


3. Kann eine abstrakte Klasse sowohl abstrakte Methoden als auch nicht-abstrakte Methoden definieren?

a.    Nein — sie muss entweder das eine oder das andere haben.
b.    Nein — sie darf nur abstrakte Methoden haben.
c.    Ja — aber die abstrakten Methoden werden nicht von der Subklasse geerbt.
d.    Ja — die Subklasse erbt beide.


4. Kann eine abstrakte Superklasse nicht-abstrakte Subklassen haben?

a.    Nein — eine abstrakte Superklasse darf nur abstrakte Subklassen haben.
b.    Nein — eine abstrakte Superklasse darf überhaupt keine Subklasse haben.
c.    Ja — alle Subklassen einer abstrakten Superklasse müssen nicht-abstrakt sein.
d.    Ja — eine abstrakte Superklasse kann sowohl abstrakte als auch nicht-abstrakte Subklassen haben.


5. Kann eine abstrakte Methode in einer nicht-abstrakten Klasse definiert sein?

a.    Nein — wenn eine Klasse eine abstrakte Methode definiert, muss die Klasse selbst abstrakt sein.
b.    Nein — nur Klassen sind abstrakt, nicht Methoden.
c.    Ja — eine Methode kann in einer beliebigen Superklasse als abstrakt deklariert sein, solange sie die Subklassen ebenfalls als abstrakt deklarieren.
d.    Ja — es gibt keine Beschränkungen wo abstrakte Methoden definiert werden können.


6. Kann eine Objektreferenz einer Subklasse einer Variablen vom Typ der Superklasse zugewiesen werden? Zum Beispiel,

Karte karte;
Geburtstag geb = new Geburtstag("Lucinda", 42);

karte = geb;   //  ist das korrekt?

a.    Nein — es muss immer eine genaue Übereinstimmung zwischen dem Typ der Variablen und dem Typ des Objekts bestehen.
b.    Nein — aber eine Objektreferenz vom Typ der Superklasse kann einer Variablen vom Typ der Subklasse zugewiesen werden.
c.    Ja — eine Objektreferenz kann einer Variablen vom Typ Superklasse zugewiesen werden.
d.    Ja — jede Objektreferenz kann jeder Referenzvariablen zugewiesen werden.


7. Was bedeutet in Java Polymorphie?

a.    Wenn eine einzelne Variable für mehrere verschiedene, aber verwandte Objekttypen an verschiedenen Stellen des Programms verwendet wird.
b.    Wenn ein Programm mehrere verschiedene Objekttypen verwendet, jeden mit seiner eigenen Variablen.
c.    Wenn eine einzelne Superklasse mehrere Subklassen hat.
d.    Wenn eine Klasse verschiedene Methoden mit dem gleichen Namen aber unterschiedlichen Parametertypen hat.


8. Was bestimmt in dem folgenden, welche Methode ausgeführt wird:

Karte karte = new Geburtstag("Lucinda", 42);

karte.gruss();

Der Typ des Objekts oder der Typ der Referenzvariablen?

a.    Der Typ des Objekts.
b.    Der Typ der Referenzvariablen?


9. Damit der folgende Code korrekt ist, von welchem Typ muss die Referenzvariable karte sein?

_________ karte;

karte = new Valentin( "Joe", 14 ) ;
karte.gruss();

karte = new Feiertag( "Bob" ) ;
karte.gruss();

karte = new Geburtstag( "Emily", 12 ) ;
karte.gruss();

a.    Valentin
b.    Feiertag
c.    Geburtstag
d.    Karte


10. Was ist der Vorteil von Polymorphie?

a.    Die gleiche Programmierlogik kann auf mehrere verwandte Objekttypen angewandt werden.
b.    Variablen können wiederverwendet werden, um Speicher zu sparen.
c.    Das Konstruieren neuer Objekte aus alten Objekten eines ähnlichen Typs spart Zeit.
d.    Polymorphie ist ein gefährlicher Aspekt der Vererbung und sollte vermieden werden.


Richtige Antworten:       in Prozent:       Bewertung:   


Inhalt (Sollten Sie gerade von einer anderen Seite hierher zurückgekommen sein oder diese Seite neu geladen haben, kann es sein, dass Sie erneut auf jede Ihrer ausgewählten Antworten klicken müssen, damit das Bewertungsprogramm korrekt arbeitet.)

Um die alten Antworten zu löschen, halten Sie die Strg-Taste gedrückt und laden dann die Seite neu (Firefox). Bei anderen Browsern funktioniert das in Verbindung mit der Umschalt- bzw. Strg+Umschalt-Taste. Beim Internet Explorer 8 muss die Seite verlassen und erneut aufgerufen werden.