(Ich weiß, ich bin spät dran, aber ich bin der hinterhältige Boi, den du mich nie gesehen hast.)
Das Schlüsselwort this in den meisten objektorientierten Programmiersprachen bedeutet, wenn nicht alle, dass es sich um eine Referenz auf die aktuelle Objektinstanz dieser Klasse handelt. Es ist im Wesentlichen dasselbe wie das Aufrufen dieses Objekts von außerhalb der Methode mit Namen. Das ergab wahrscheinlich keinen Sinn.
Außerhalb der Klasse haben Sie beispielsweise ein Objekt namens object und möchten ein Feld abrufen, das Sie verwenden müssen, um etwas innerhalb dieser Instanz des Objekts aufzurufen
object.field
Angenommen, Sie versuchen, innerhalb Ihrer Klasse auf object.field zuzugreifen , beispielsweise auf Ihren Konstruktor, den Sie verwenden könnten
this.field
Das Schlüsselwort this ersetzt im Wesentlichen das Schlüsselwort object name, wenn es innerhalb der Klasse aufgerufen wird. Es gibt normalerweise keinen Grund, dies außerhalb zu tun, wenn Sie zwei gleichnamige Variablen haben, von denen eine ein Feld der Klasse und die andere nur eine Variable innerhalb einer Methode ist. Dies hilft bei der Entschlüsselung zwischen den beiden . Zum Beispiel, wenn Sie dies haben: (Hah, verstanden? Das ? Hehe ... nur ich? Okay :( Ich werde jetzt gehen)
public String Name;
//Constructor for {object} class
public object(String Name){
Name = Name;
}
Dies würde einige Probleme verursachen. Der Compiler könnte den Unterschied zwischen der in den Parametern für den Konstruktor definierten Namensvariablen und der Namensvariablen in den Felddeklarationen Ihrer Klasse nicht erkennen, sodass er stattdessen den Parameter Name zuweisen würde. .. der Wert des Parameters Name, der nichts Nützliches bewirkt und buchstäblich keinen Zweck hat. Dies ist ein häufiges Problem, das die meisten neueren Programme haben, und ich war auch ein Opfer davon. Der richtige Weg, um diesen Parameter zu definieren, wäre:
public String Name;
//Constructor for {object} class
public object(String Name){
this.Name = Name;
}
Auf diese Weise weiß der Compiler, dass die Name-Variable, die Sie zuweisen möchten, Teil der Klasse und nicht Teil der Methode ist, und weist sie korrekt zu. Dies bedeutet, dass das Feld Name dem zugewiesen wird, was Sie in den Konstruktor eingeben.
Zusammenfassend verweist es im Wesentlichen auf ein Feld der Objektinstanz der Klasse, an der Sie arbeiten. Daher ist es das Schlüsselwort "this", was bedeutet, dass es sich um dieses Objekt oder diese Instanz handelt. Es ist eine gute Praxis, dies zu verwenden, wenn Sie ein Feld Ihrer Klasse aufrufen, anstatt nur den Namen zu verwenden, um mögliche Fehler zu vermeiden, die schwer zu finden sind, da der Compiler direkt darüber läuft.