Dieser Artikel ist derzeit noch in Bearbeitung!

Lernpfad:Objektorientierte Programmierung mit Java/Referenzen: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
Keine Bearbeitungszusammenfassung
Zeile 11: Zeile 11:


== Referenzen erzeugen ==
== Referenzen erzeugen ==
<syntaxhighlight lang="java" line=1>
public class Zahl {
    private int zahl;
    public Zahl( int pZahl ) {
        zahl = pZahl;
    }
    public void setZahl( int pZahl ) {
      zahl = pZahl;
    }
    public int getZahl() {
        return zahl;
    }
}
public class ZahlenTester {
    public ZahlenTester() {
        // Erzeugen einer neuen Instanz von Zahl
        Zahl a = new Zahl(999);
        // Erzeugen einer Referenz auf die bestehende Objektinstanz von Zahl
        Zahl b = a;
        System.out.println("a:" + a.getZahl()); // a: 999
        System.out.println("b: " + b.getZahl()); // b: 999
        b.setZahl(111);
        System.out.println("a:" + a.getZahl()); // a: 111
    }
}
</syntaxhighlight>

Version vom 19. Oktober 2018, 20:21 Uhr

Objektreferenzen

Jede Objektinstanz einer Klasse wird von Java im Speicher abgelegt. Für jede Instanz wird dazu eine festgelegte Anzahl Bits reserviert, abhängig von den deklarierten Objektvariablen.

Wird dasselbe Objekt nun einer neuen Variablen zugewiesen, als Parameter einer Methode übergeben oder als neue Objektvariable gespeichert, wird keine Kopie des Objektes angelegt, sondern eine Referenz erzeugt. Das bedeutet, dass nur die Speicheradresse der ersten Objektinstanz im Speicher abgelegt wird. Man spricht auch von einem Zeiger auf das Objekt.

Man kann sich das wie einen Abholschein der Post vorstellen, auf der steht, dass man ein Paket bei der Poststelle abholen kann. Die Referenznummer auf dem Schein ist ein Zeiger auf den Ort, an dem das Paket von Postboten abgelegt wurde. Der Postmitarbeiter kennt die Referenznummer auch - hat also auch einen Zeiger auf das Paket - und weiß, wo er im Lager suchen muss, um es heraus zu geben.
Postfachschraenke.jpg

Würde der Mitarbeiter etwas an dem Paket verändern, dann würdest du die Veränderung auch sehen, sobald du das Paket erhalten hast, da es sich um dasselbe Objekt handelt.

Referenzen erzeugen

public class Zahl {
    private int zahl;
    public Zahl( int pZahl ) {
        zahl = pZahl;
    }
    public void setZahl( int pZahl ) {
       zahl = pZahl;
    }
    public int getZahl() {
        return zahl;
    }
}

public class ZahlenTester {
    public ZahlenTester() {
        // Erzeugen einer neuen Instanz von Zahl
        Zahl a = new Zahl(999);
        // Erzeugen einer Referenz auf die bestehende Objektinstanz von Zahl
        Zahl b = a;

        System.out.println("a:" + a.getZahl()); // a: 999
        System.out.println("b: " + b.getZahl()); // b: 999
        b.setZahl(111);
        System.out.println("a:" + a.getZahl()); // a: 111
    }
}