hallo, ich hätte da ne frage zu der aufgabe der klausur vom 27.2.2008.
und zwar beim aufruf von B b = new B(10) ist mir nicht ganz klar warum b.x = 2 ist. ich hätte jetzt gedacht, dass der wert 10 an den konstruktor von B übergeben wird und das der dann diesen wert 10 an den super-aufruf übergibt. somit übergibt dann der super-aufruf den wert 10 an den konstruktor von A. dieser würde dann die 10 mit der 1, also mit A.x, addieren und das ergebnis 11 ausgeben.
so hätte ich jedefalls argumentiert. aber laut musterlösung ist es anders. das kommt b.x=2 raus. spielt denn die 10 keine rolle?
und dann hab ich ein wenig nachgedacht und bin auf folgende idee gekommen: in dem aufruf zuvor wird ja der wert von x zu -8. so und x ist ja static. das heißt, x existiert für alle objekte der klasse nur einmal. und wenn ich jetzt -8 +10 rechne, dann kommt ja 2 raus, denn in dem konstruktor von A wird ja A.x += A.x + x gerechnet, wobei das x der 10 entspricht und A.x den wert -8 hat.
habe ich so richtig gedacht, oder wird da doch was anderes gerechnet?