public class Figur {
private int anzahlArme;
public void setAnzahlArme1(int anzahlArme){
this.anzahlArme = anzahlArme;
}
public void setAnzahlArme2(int arme ){
this.anzahlArme = arme;
}
public void setAnzahlArme3(int arme ){
anzahlArme = arme;
}
public Figur wasGebeIchZurück()
{
return this;
}
}
http://openbook.galileocomputing.de/javainsel8/javainsel_06_001.htm#mja678e97685429a7375ffc8b205153136 hat gesagt.:Die this-Referenz löst das Problem, wenn lokale Variablen Objektvariablen verdecken.
[...]
Trägt eine lokale Variable den gleichen Namen wie eine Objektvariable, so verdeckt sie diese
[...]
Somit bezieht sich in der Methode jeder Zugriff auf name auf die Parametervariable und nicht auf die Objektvariable.
[...]
Das heißt aber nicht, dass auf die äußere Variable nicht mehr zugegriffen werden kann. Die this-Referenz zeigt auf das aktuelle Objekt, und damit ist auch ein Zugriff auf Objekteigenschaften jederzeit möglich.
class Figur {
private int arme = 2;
void printArme(int arme) {
// hier verdeckt die lokale variable arme, die objektvariable arme!
System.out.println(arme); // die ausgabe hätte hier den wert welcher übergeben wird
// wie kann man nun also dennoch auf arme des objektes zugreifen?
// die antwort ist this!
System.out.println(this.arme); // ausgabe = 2
}
}
public class MeineKlasse {
private int x = 2;
private int y = 5;
private int z;
...
}
public void setValue(int x, int y) {
int z = x + y; //z ist nicht die Summe aus 2 und 5
this.z = z + 20; //die Instanzvariable z erhält die Summe aus der lokalen Variable z und 20
}
Den "this" Operator braucht man um zwischen einer Instanzvariable und einer lokalen Variabeln mit denselben Namen zu unterscheidenIch versteh denn sinn absolut nicht.
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
}
setName
willst du das Instanzattribut name
auf einen bestimmten Wert setzen. Dazu bekommt die Methode einen Parameter übergeben, welcher den zu setzen Wert enthält.name = name
schreibst passiert nichts anderes als dass du den Wert des Parameter mit dem Wert des Parameter überschreibst.name
zugreifen kannst brauchst du den "this"-Operator.this.name = name
Was ist für dich der Unterschied zwischen "Instanzvariable" und "Objektvariable"? Welche zwei Arten von Variablen meinst du?Wozu brauch ich denn überhaupt die Instanzvariable ..... denn nicht gleich mit der objektvariablen an.. wozu brauche ich denn überhaupt zwei Arten von Variablen, die irgendwie das gleiche darstellen