Hallo allerseits,
hab so ein kleines Verstädnis-Problem, was Referenzvariablen angeht. Ich habe u.a. folgenden Quelltext:
Das Programm startet mit Erzeugung eines Exemplar der selbstgeschriebenen Klasse Hauptfenster, welches ein Exemplar der Klasse Spielroboter erzeugt. Hauptfenster hat eine Methode bauteilPlus, in der auch die als formale Parameter übergebenen Werte verändert werden.
Ich hatte das jetzt so verstanden, dass wenn ich in bauteilKonstruktion() koord1 als Referenzvariable an bauteilPlus() übergebe, die eigentliche Variable koord1 nicht verändert wird, wenn bauteilPlus() die übergebenen Zahlenwerte ändert. Genau das passiert aber: Wenn bauteilPlus() die übergebenen Zahlen ändert, ändern sie sich auch in koord1 in Spielroboter!?
Das irritiert mich gelinde gesagt...
hab so ein kleines Verstädnis-Problem, was Referenzvariablen angeht. Ich habe u.a. folgenden Quelltext:
Java:
public class Spielroboter
{
private Hauptfenster _hauptfenster;
private double[] koord1 = {50,0,0};
/**
* Konstruktor für Objekte der Klasse Spielroboter
*
* @param fenster Übergabe der Referenz auf das Hauptfenster, um Bauteile einfügen zu können
*/
public Spielroboter(Hauptfenster fenster)
{
_hauptfenster = fenster;
bauteilKonstruktion();
}
/**
* Auslagerung der Konstruktion des eigentlichen Roboters
*/
private void bauteilKonstruktion()
{
_hauptfenster.bauteilPlus(koord1, "xy-radial", 0, 8);
}
Das Programm startet mit Erzeugung eines Exemplar der selbstgeschriebenen Klasse Hauptfenster, welches ein Exemplar der Klasse Spielroboter erzeugt. Hauptfenster hat eine Methode bauteilPlus, in der auch die als formale Parameter übergebenen Werte verändert werden.
Ich hatte das jetzt so verstanden, dass wenn ich in bauteilKonstruktion() koord1 als Referenzvariable an bauteilPlus() übergebe, die eigentliche Variable koord1 nicht verändert wird, wenn bauteilPlus() die übergebenen Zahlenwerte ändert. Genau das passiert aber: Wenn bauteilPlus() die übergebenen Zahlen ändert, ändern sie sich auch in koord1 in Spielroboter!?
Das irritiert mich gelinde gesagt...