Beantworten Sie die Quizfragen in Zeile 5 und 6. Klicken Sie Zeilen an, um Ihre Anworten zu prüfen.
Ruft A.f() mit statischer Bindung auf, weil f() eine Klassenmethode ist.
Der Aufruf ist falsch, weil g() eine Instanzmethode ist und deshalb mit einem Objekt statt mit Klassenname aufgerufen werden muss.
Der Aufruf ist falsch, weil h() eine Instanzmethode ist und deshalb mit einem Objekt statt mit Klassenname aufgerufen werden muss.
Der Aufruf ist doppelt falsch, weil i() zum einen privat ist und zum anderen eine Instanzmethode ist, die mit einem Objekt statt mit Klassenname aufgerufen werden muss.
Ruft den Konstruktor A.A() mit statischer Bindung auf.
Ruft A.f() mit statischer Bindung auf, weil a ein Variable vom Typ A ist. Ein solcher Aufruf einer Klassenmethode über eine Variable statt über den Klassennamen ist schlechter Stil.
Ruft A.g() mit dynamischer Bindung auf, weil g() eine öffentliche Instanzmethode in A ist.
Ruft mit dynamischer Bindung A.h() auf, weil h() eine öffentliche Instanzmethode in A ist und a ein Objekt der Klasse A referenziert.
Der Aufruf ist falsch, weil a vom Typ A ist und A.i() privat ist.
Ruft mit statischer Bindung den Konstruktor B.B() auf.
a ist eine polymorphe Variable, weil sie als Typ eine Oberklasse hat. Die Zuweisung ist erlaubt, weil B eine Unterklasse von A ist.
Ruft mit statischer Bindung A.f() auf, weil a ein Variable vom Typ A ist. Die Klasse B des referenzierten Objekts spielt keine Rolle. Aus dem Grund ist ein solcher Aufruf einer Klassenmethode über eine Variable statt über den Klassennamen schlechter Stil.
Ruft A.g() mit dynamischer Bindung auf, weil g() eine öffentliche Instanzmethode in A ist und g() in B nicht überschrieben ist.
Ruft mit dynamischer Bindung B.h() auf, weil h() eine öffentliche Instanzmethode in A ist, die in B überschrieben ist, und a ein Objekt der Klasse B referenziert.
Der Aufruf ist falsch, weil a vom Typ A ist und A.i() privat ist.
Ruft mit statischer Bindung den Konstruktor B.B() auf.
Ruft mit statischer Bindung B.f() auf, weil b ein Variable vom Typ B ist. Ein solcher Aufruf einer Klassenmethode über eine Variable statt über den Klassennamen ist schlechter Stil.
Ruft mit dynamischer Bindung A.g() auf, weil g() eine von A geerbte öffentliche Instanzmethode ist, die in B nicht überschrieben ist.
Ruft mit dynamischer Bindung B.h() auf, weil h() eine öffentliche Instanzmethode in B ist, und b ein Objekt der Klasse B referenziert.
Ruft mit dynamischer Bindung B.i() auf, weil i() eine öffentliche Instanzmethode in B ist, und b ein Objekt der Klasse B referenziert.
Ruft A.i() mit statischer Bindung auf, weil i() eine private Methode ist.
Ruft mit statischer Bindung per super() den Konstruktor A.A() auf.
Methode in der Unterklasse nicht erlaubt, weil g() in der Oberklasse final markiert und damit nicht überschreibar ist.
Die Methode sollte bei gutem Stil mit @Override annotiert werden.
Ruft i() mit dynamischer Bindung auf, weil i() in B eine öffentliche Instanzmethode ist. Da es in diesem Programm keine Unterklassen von B gibt, wird zur Laufzeit die Methode B.i() ausgewählt.
Ruft A.h() mit statischer Bindung auf, weil super verwendet wird.