übersetzt 07.03.04; überarbeitet 24.02.05, 01.02.11; Deutsche Übersetzung Heinrich Gailer

Ein weiteres Quiz über 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: Wählen Sie für jede Frage die beste Antwort und klicken Sie auf das entsprechende Optionskästchen. Sie können Ihre Antwort jederzeit ändern. Wenn das Quiz bewertet wird, erscheint die richtige Antwort in der Textbox nach jeder Frage.



1. Was ist die Signatur einer Methode?

a.    Die Signatur einer Methode ist der Name einer Methode und der Typ ihres Rückgabewerts.
b.    Die Signatur einer Methode ist der Name der Methode and die Namen ihrer Parameter.
c.    Die Signatur einer Methode ist der Name der Methode und die Datentypen ihrer Parameter.
d.    Die Signatur einer Methode ist der Name der Methode, ihre Parameterliste und ihr Rückgabetyp.


2. Hier ist eine Methodendefinition:

int berechne( int a, double y ){ . . . .}

Welche der folgenden Definition hat eine andere Signatur?

a.    int berechne( int summe, double wert){ . . . .}
b.    double berechne( int a, double y ){ . . . .}
c.    double berechne( int summe , double y ){ . . . .}
d.    int berechne( int a, int y ){ . . . .}


3. Was muss eine nicht-abstrakte Subklasse mit einer abstrakten Methode ihrer Superklasse tun?

a.    Eine Subklasse muss eine geerbte abstrakte Methode überschreiben, in dem sie eine Methode mit der gleichen Signatur und dem gleichen Rückgabetyp definiert:
b.    Eine Subklasse muss eine zusätzliche Methode definieren, die der geerbten Methode gleicht, in dem sie eine Methode mit der gleichen Signatur, aber einem anderen Rückgabetyp definiert.)
c.    Eine Subklasse darf keine Methode mit der gleichen Signatur definieren, wie sie bereits eine abstrakte Methode der Superklasse besitzt.
d.    Eine nicht-abstrakte Subklasse darf keine abstrakte Methode mit der gleichen Signatur und dem gleichen Rückgabetyp, wie die abstrakte Methode der Superklasse, definieren.


4. Hier ist eine in der Superklasse definierte abstrakte Methode:

public abstract int summiereAuf ( int[] arr );

Welche der folgenden Methoden ist in einer nicht-abstrakten Subklasse erforderlich?

a.    public abstract int summiereAuf ( int[] arr ) { . . . }
b.    public int summiereAuf ( int[] arr ) { . . . }
c.    public double summiereAuf ( int[] arr ) { . . . }
d.    public int summiereAuf ( long[] arr ) { . . . }


5. Was muss wahr sein, wenn eine Subklasse einer abstrakten Superklasse die abstrakten Methoden der Superklasse nicht überschreibt?

a.    Das ist immer ein Fehler.
b.    Die Subklasse muss selbst als abstrakt deklariert werden.
c.    Subklassen sind automatisch nicht-abstrakt, also ist das OK.
d.    Die Superklasse ist ein Fehler.


6. Gegeben ist die folgende Situation:

Geburtstag happy;
happy = new ErwachsenenGeburtstag( "Joe", 39);

happy.gruss();

Welche gruss() Methode wird ausgeführt: die, die in Geburtstag definiert ist oder die, die in ErwachsenenGeburtstag definiert ist?

a.    Die, die in Geburtstag definiert ist, da das der Typ der Variablen happy ist.
b.    Die, die in ErwachsenenGeburtstag definiert ist, da das der Typ des von happy referenzierten Objekts ist.
c.    Diejenige, die im Quellcode der Anweisung happy.gruss() am nächsten steht.
d.    Weder noch — die Zuweisungsanweisung ist ein Fehler.


7. Angenommen die Klasse Nager hat eine Subklasse Ratte und eine weitere Subklasse Maus. Die Klasse Maus hat eine Subklasse TaschenMaus. Prüfen Sie das folgende:

Nager nager;
Ratte ratte = new Ratte();
Maus maus = new Maus();
TaschenMaus taschenmaus = new TaschenMaus();

Welche der folgenden Zuweisungen wird einen Compilerfehler verursachen?

a.    nager = ratte;
b.    nager = maus;
c.    taschenmaus = null;
d.    taschenmaus = ratte;


8. Angenommen die Situation ist die gleiche wie in Frage 7. Welche der folgenden Arraydeklarationen ist für ein Array korrekt, das 10 Objekte der Typen Ratte, Maus und TaschenMaus aufnehmen soll?

a.    Ratte[]  array = new Ratte[10];
b.    Nager[] array = new Ratte[10];
c.    Nager[] array = new Nager[10];
d.    Nager[10] array;


9. Welches ist der Name der Klasse, die der Vorfahre jeder Klasse in Java ist?

a.    Object
b.    Class
c.    Root
d.    Java


10. Prüfen Sie den folgenden Code:

String str = "Hot Java";

boolean flag = str instanceof String;

Welcher Wert wird an flag übergeben?

a.    true
b.    false
c.    "Hot Java"
d.    null


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.