Java Reference
In-Depth Information
6.2.2 Referenztypen als Parameter
Es können auch Referenztypen, d. h. also auch Objekte, als Parameter übergeben wer-
den. Als Beispiel soll hier eine Methode erstellt werden, die einen Bruch mit einem als
Parameter übergebenen Bruch multipliziert. Das Ergebnis bildet die neuen Werte für
Zähler und Nenner des Objekts, dessen Multiplikationsmethode aufgerufen wurde. Die
Methode mit dem Namen
multipliziere
kann folgendermaßen codiert werden:
6
void multipliziere(Bruch m) {
zaehler *= m.zaehler;
nenner *= m.nenner;
}
Listing 6.4
Methode mit Referenztyp als Parameter
Sie können bereits an der Codierung der Methode erkennen, dass hier kein neues
Objekt erstellt wird, denn es wird nirgendwo der Operator
new
eingesetzt. Somit stellt
m
nur einen Alias für das beim Aufruf verwendete Argument dar. Der folgende Pro-
grammcode nutzt die Multiplikationsmethode (
Abbildung 6.5
).
class
Bruch {
public
class
Bruchtest {
public
static
void
main(String[] args) {
Bruch a =
new
Bruch();
a.zaehler = 3;
a.nenner = 4;
Bruch b =
new
Bruch();
b.zaehler = 3;
b.nenner = 12;
a.ausgeben();
a.multipliziere(b
)
;
System.
out
.println();
a.ausgeben();
}
}
class
Bruch {
int
zaehler
;
int
nenner
;
int
zaehler;
int
nenner;
void
ausgeben() {
.
.
.
void
ausgeben() {
.
.
.
}
}
void
multipliziere(Bruch m) {
void
multipliziere(Bruch m) {
zaehler
*= m.
zaehler
;
nenner
*= m.
nenner
;
}
}
zaehler *= m.zaehler;
nenner *= m.nenner;
}
}
Abbildung 6.5
Referenztyp als Parameter
Das beim Aufruf der Methode verwendete Argument
b
wurde mit
new
erzeugt. Beim
Aufruf der Methode wird nur eine neue Referenz (ein neuer Verweis) auf das Argument
mit dem Namen
m
erzeugt. Das bedeutet, dass beim Zugriff auf
m
eigentlich immer auf
das »Original«
b
zugegriffen wird.
Sie sehen, dass bei der Verwendung von Referenzvariablen als Parametern keine Kopie
des Objekts, sondern lediglich eine Kopie der Referenz erstellt wird (
Abbildung 6.6
).