Dies ist ein Schlüsselwort in Java, das ein Objekt darstellt. Dies kann in Instanzmethoden und Konstruktoren auftreten, jedoch nicht in Klassenmethoden.
Verwenden Sie dies im Konstruktor
Wenn das Schlüsselwort this im Konstruktor einer Klasse vorkommt, stellt es das mit diesem Konstruktor erstellte Objekt dar.
Zum Beispiel:
publicclassPeople{intleg,hand;Stringname;People(Strings){name=s;this.init();//Dies kann weggelassen werden, d. h. als init();}voidinit(){leg=2;hand =2;System .out.println(name+have+hand+hand+1eg+leg);}publicstaticvoidmain(Stringargs[]){Peopleboshi=newPeople(Bush);}}Verwenden dieser Instanzmethoden
Instanzmethoden können nur über das Objekt aufgerufen werden, nicht über den Klassennamen. Wenn das Schlüsselwort this in einer Instanzmethode vorkommt, stellt es das aktuelle Objekt dar, das die Methode aufruft.
Instanzmethoden können Mitgliedsvariablen einer Klasse bedienen. Wenn Instanzmitgliedsvariablen in einer Instanzmethode erscheinen, ist das allgemeine Format:
this.member-Variable;
Wenn statische Mitgliedsvariablen in Instanzmethoden erscheinen, ist das allgemeine Format:
Klassenname.Member-Variable;
Zum Beispiel:
classA{intx;staticinty;voida(){this.x=10;Ay=20;}}Dies erscheint in der Instanzmethode a in Klasse A. Dies stellt das aktuelle Objekt mithilfe von a dar, sodass „this.x“ die Variable x des aktuellen Objekts darstellt. Wenn das Objekt Methode a aufruft, wird der Variablen des Objekts 10 zugewiesen . X. Wenn ein Objekt eine Methode aufruft, verweisen die Instanzmitgliedsvariablen in der Methode auf die dem Objekt zugewiesenen Instanzmitgliedsvariablen, und statische Variablen werden mit anderen Objekten geteilt. Daher können Sie unter normalen Umständen „this“ vor dem Namen der Instanzmitgliedsvariable und „class name“ vor der statischen Variablen weglassen.
Zum Beispiel:
classA{intx;staticinty;voida(){x=10;//This.y=20;//den Klassennamen weglassen.}}Beachten:
Wenn der Name der Instanz-Membervariablen mit dem Namen der lokalen Variablen übereinstimmt, kann „this“ oder „class name“ vor der Membervariablen nicht weggelassen werden.
Instanzmethoden einer Klasse können andere Methoden der Klasse aufrufen. Das allgemeine Format zum Aufrufen von Instanzmethoden ist:
this.method;
Das allgemeine Format für Klassenmethodenaufrufe ist:
Klassenname.Methode;
Zum Beispiel:
classB{voidb(){this.c();Bd();}voidc(){System.out.println(hi);}staticvoidd(){System.out.println(ok);}}Dies erscheint in Methode b in Klasse B und stellt das aktuelle Objekt dar, das Methode b aufruft. Daher ist this.c() im Methodenkörper von Methode b das aktuelle Objekt, das Methode c aufruft, dh die Methode an einem bestimmten Ort aufruft Objekt Im Prozess von b wird die Methode c erneut aufgerufen. Da diese logische Beziehung sehr klar ist, können Sie „dies“ oder „Klassenname“ vor dem Methodennamen weglassen, wenn eine Instanzmethode eine andere Methode aufruft.
Zum Beispiel:
classB{voidb(){c();//this.d();//den Klassennamen weglassen.}voidc(){System.out.println(hi);}staticvoidd(){System.out.println ( OK);}}Beachten:
Dies kann nicht in Klassenmethoden vorkommen, da Klassenmethoden direkt über den Klassennamen aufgerufen werden können und möglicherweise noch kein Objekt geboren wurde.