Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
also ein frage finde bis jetzt keine richtige antwort. würde gerne wissen was this.irgendetwas macht wofür ist dieser befehl da wo kann man nachlesen bzw. könnt ihr mir helfen was das genau macht?
public class Hund {
String name;
public Hund(String name) {
name = name; //sehr schlecht, das macht nämlich nix, Paramter = Parameter
this.name = name; //besser
this.scheißInDenWald(); //man weiß genau was passiert
scheißInDenWald(); //geht auch, aber nicht so übersichtlich
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void scheißInDenWald(){
System.out.println(name+" scheißt in den Wald!");
}
}
oder wenn sich das objekt selber irgendwo mitgibt
Code:
public void addMeToHundeHuete(HundeHeute huete){
hueute.add(this);
}
usw....
ps: huete schaut gscheid blöd aus, sind wir froh das wir umlaute haben ;-)
Manchmal übergibt man eine Referenz auf dieses Objekt an eine andere Klasse, damit diese damit arbeiten kann. Oder man möchte in einer Methode erreichen, dass nicht eine namensgleiche lokaleVariable verwendet wird, sondern die Instanzvariable. Manchmal möchte man das Programm auch einfach besser lesbar machen. Mit this macht man hier deutlich, dass ein Element aus dieser Klasse gemeint ist, also die Klasse, in der man sich gerade befindet.
'this' ist der Verweis eines Objektes auf sich selbst.
Meisens braucht man derlei nicht, denn bei unserem Handwerk achten wir schon selbst darauf keine doppelten Bezeichner zu verwenden; achten wir schon selbst darauf, alles was vererbt werden kann hinzunehmen und diesen Größen ihren Namen zu belassen.
Manchmal führt aber kein weg daan vorbei. Manchmal erben wir Methoden und müssen sie Methoden überschreiben, oder erben Komponenten und müssen sie unseren Wüschen anpassen. Und dann kann der Interpreter verwirrt werden. Dann weiß der Interpreter nicht, ob wie die Methode/Komponente der Ursprungsklasse meinen, oder unsere Neuformulierung der beerbten Klasse.
Und manchmal passiert es auch, daß Progammierer aus reiner Faulheit übergebene Werte so benennen wie die Größen in die sie geschrieben werden sollen. Auch dann ist es praktisch (und notwendig) eine klare Unterscheidung zu treffen. Mit 'this' mitzuteilen was dem Objekt gehört und was nicht.
darüber könnte man streiten. Ich mach das immer so und zwar nicht aus faulheit. Wenn es sich konkret um die selbe Variable handelt, dann fang ich mir nicht an vorn ein a oder sonst was dazu zu schreiben. ich weiß diesen parameter eh sofort meiner variable zu.
darüber könnte man streiten. Ich mach das immer so und zwar nicht aus faulheit. Wenn es sich konkret um die selbe Variable handelt, dann fang ich mir nicht an vorn ein a oder sonst was dazu zu schreiben. ich weiß diesen parameter eh sofort meiner variable zu.
... dein Verzicht auf Präfixe wie 'str', 'obj' ist also keine Faulheit, sondern nur Bequemlichkeit? )) Damit zwingst du dich allerdings selbst dazu bei den Zuweisungen (wie oben im Code) ein 'this' zu führen.
Nun, beruflich muß ich mich an die Werksvorgaben halten und etliche Firmen fordern das konsequente führen von Präfixen.
Privat nutze ich hier gerne die Groß- und Kleinschreibung.
Code:
public void setName(String name) {
Name = name;
}
wobei ich Übergabewerte konsequent klein schreibe und in meinen Variablen mindestens einen Buchstaben groß schreibe. Das ist nur eine andere Strategie um eine klare Unterscheidung zu treffen.
Die Hinterfragung von 'batou' hat ja schon seine Berechtigung. In konsequent strukturierten Sprachen braucht man überhaupt keine Referenz einer Klasse auf sich selbst. Wenn man überhaupt beerbt, dann genügt eine Referenz auf die Mutterklasse mit super.machWas(...) um eigene Daten von denen der Mutterklasse zu unterscheiden. Die Klasse weiß doch selbst, daß sie gerade ausgeführt wird... da muß man es ihr nicht noch extra sagen.