"Grundkurs Programmieren in Java - (6. Auflage, 2011)"
2001-2011, Carl Hanser Verlag

Lösungsvorschlag zu Aufgabe 8.6 (Version 3.0)

(c) 2001-2011 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger

Programmausgabe:

  E:\hiwi\temp>java TestZwei
  2-1
  3-5-4-4-5

Erklärung:

Darstellung der Referenzstruktur (die statische Variable g der Klasse Eins wird nicht dargestellt). Angaben von Zeilen-Nummern beziehen sich auf den im Buch abgedruckten Quelltext.

  1. Struktur nach Abarbeitung der Zeilen 24 und 25:
        Eins e1 = new Eins(1), e2;
        Zwei z1 = new Zwei(e1), z2;
    
    Bild 1

    Danach ergeben die beiden Zeilen
        System.out.print  (Eins.g + "-");
        System.out.println(z1.h.f);
    
    folgende Ausgabe:
    2-1
    
  2. Struktur nach Abarbeitung der Zeilen 28 und 29:
        e2 = (Eins) e1.clone();
        z2 = (Zwei) z1.clone();
    
    Bild 2

  3. Nach Abarbeitung von Zeile 30
        e1.f = 4;
    
    haben wir: Bild 3

  4. Danach wird noch die Klassen-Variable g erhöht:
        Eins.g = 5;
    
    Die restlichen Zeilen
        System.out.print  (e2.f + "-");
        System.out.print  (e2.g + "-");
        System.out.print  (z1.h.f + "-");
        System.out.print  (z2.h.f + "-");
        System.out.println(z2.h.g);
    
    ergeben dann folgende Ausgabe:
      3-5-4-4-5
    


Quelltext:
TestZwei.java (Alle drei Klassen in einer Datei)