Lernpfad:Objektorientierte Programmierung mit Java/Referenzen: Unterschied zwischen den Versionen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 11: | Zeile 11: | ||
== Referenzen erzeugen == | == Referenzen erzeugen == | ||
Prinzipiell kann jede Variable, die als Typ keinen der {{Pfad|Datentypen und Variablen|generischen Datentypen}} hat, als Referenz betrachtet werden. Jede Zuweisung der Variablen zu einer anderen Variablen erzeugt eine weitere Referenz auf dieselbe Objektinstanz. | |||
<syntaxhighlight lang="java" line=1> | <syntaxhighlight lang="java" line=1> | ||
public class Zahl { | public class Zahl { | ||
Version vom 21. Oktober 2018, 14:18 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.
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
Prinzipiell kann jede Variable, die als Typ keinen der generischen Datentypen hat, als Referenz betrachtet werden. Jede Zuweisung der Variablen zu einer anderen Variablen erzeugt eine weitere Referenz auf dieselbe Objektinstanz.
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
}
}
