Probeklausur

Status
Nicht offen für weitere Antworten.
Ich hätte mal eine kurze Frage zu einer Probeklausur:

aufzeichneng3i.jpg


aufzeichnen2ly3.jpg


Es geht um diese Aufrufe. In der Lösungen geben sie an, dass 2 und 4 ausgegeben wird. Kommt die 2 daher, dass der parameterlose Konstruktor der Superklasse automatisch aufgerufen wird?

PS: Im Quiz-Teil gibts die Frage: Subklassen erben alle Methoden und Attribute der Superklasse. Was stimmt daran nicht?
 

Leroy42

Top Contributor
Die Methoden set_x und set_y existieren doch gar nicht! ???:L

Eher: Subklassen erben alle Instanz-Methoden und Instanz-Attribute ...

Edit: ... die in der Oberklasse nicht private oder final sind
 
Ja die werden in nem Aufgabenteil davor implementiert. Deswegen steht da oben ja auch / Hier ist Platz für deinen Code /..

sind jedenfalls ganz normale Setter.
 

sliwalker

Top Contributor
Leroy42 hat gesagt.:
Kann nicht sein, da die Klasse A keine Instanzvariablen _x oder _y besitzt!

:bahnhof: Wo bist Du denn?

set_x ist ein Methodenaufruf. Nur dass ein blank vor der Klammer steht oO.
Aber die Variablen x und y gibt es.


Zu Deiner Frage.
Ja, der Standartkonstruktor wird aufgerufen, sofern Du nicht explizit einen anderen aufrufst(andere Signatur).

greetz
SLi
 

Leroy42

Top Contributor
Okay! :D

Dann mal von Vorne:

new B(3) ruft den Default-Konstruktor von A auf. Dadurch:

x=2, y=1, z=3

Danach: setY(4) also y=4

Dann setX(foo.getY()) also setX(1) also x=1
Dann setY(foo.getX()) also setY(2) also y=2

print q.get(x) also 1
print q.get(y) also 4

???:L
Wo habe ich denn jetzt einen Fehler gemacht? :shock:
 

Leroy42

Top Contributor
mikemodanoxxx hat gesagt.:
setX(foo.getY()) also setX(1) also x=1

Das stimmt nicht. Das wird ja nur aufgerufen wenn i 2 ist, ist aber 3

Hast Recht! Ich hatte versehentlich die Folgeanweisungen des parameterlosen
Konstruktors von B ausgeführt.

Dann stimmt ja doch alles! :cool:

Obwohl ich jetzt dennoch total verwirrt bin

(solche Fragen gehören zum Wochenende verboten :noe: )
 

sliwalker

Top Contributor
Wildcard hat gesagt.:
sliwalker hat gesagt.:
Leroy42 hat gesagt.:
Kann nicht sein, da die Klasse A keine Instanzvariablen _x oder _y besitzt!

:bahnhof: Wo bist Du denn?
Leroy42 hat aber recht. Wenn es keine Variable _x gibt, ist set_x auch kein normaler setter gemäß den Konventionen.

Ach gemäß den Konventionen :lol:
Da haste Recht.
Da müsste mana ber noch mehr umschreiben...

greetz
SLi
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben