Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java this-Schlüsselwort erklärt: Praktische Anwendungen, Konstruktoren und mehr

Java this-Schlüsselwort erklärt

Dieser Artikel beleuchtet das this-Schlüsselwort in Java, seinen Zweck, häufige Szenarien und Best Practices mit klaren, realitätsnahen Beispielen.

Was ist this?

In Java bezieht sich das this-Schlüsselwort auf die aktuelle Instanz einer Klasse. Es wird am häufigsten innerhalb von Instanzmethoden oder Konstruktoren verwendet, um zwischen Instanzvariablen und Parametern zu unterscheiden, die denselben Namen haben.

class Haupt { int instanzVar; Haupt(int instanzVar){ this.instanzVar = instanzVar; System.out.println("this Referenz = " + this); } public static void main(String[] args) { Haupt obj = new Haupt(8); System.out.println("objekt Referenz = " + obj); } }

Ausgabe:

this Referenz = Haupt@23fc625e objekt Referenz = Haupt@23fc625e

Sowohl this als auch die Variable obj verweisen auf dieselbe Objektinstanz, was bestätigt, dass this einfach ein Verweis auf das aktuelle Objekt ist.


Wann this verwenden

Das Schlüsselwort ist in mehreren gängigen Codierungsmustern unverzichtbar:

Variablennamen-Konflikte auflösen

Java erlaubt, dass ein Parameter denselben Namen wie eine Instanzvariable hat, aber ohne this kann der Compiler nicht erkennen, welche gemeint ist. Zum Beispiel:

class MeineKlasse { int alter; MeineKlasse(int alter){ alter = alter; } }

Im obigen Konstruktor weist alter = alter den Parameter sich selbst zu, die Instanzvariable bleibt unverändert. Mit this wird die Zuweisung geklärt:

class Haupt { int alter; Haupt(int alter){ this.alter = alter; } public static void main(String[] args) { Haupt obj = new Haupt(8); System.out.println("obj.alter = " + obj.alter); } }

Ausgabe:

obj.alter = 8

Wenn der Parametername vom Instanzvariablennamen abweicht, verwendet der Compiler implizit this:

class Haupt { int alter; Haupt(int i) { alter = i; } }

Dies entspricht this.alter = i.

this in Gettern und Settern verwenden

Setter und Getter akzeptieren oft einen Parameter mit demselben Namen wie das Feld. this stellt sicher, dass die korrekte Variable angesprochen wird:

class Haupt { String name; // Setter void setName(String name) { this.name = name; } // Getter String getName(){ return this.name; } public static void main(String[] args) { Haupt obj = new Haupt(); obj.setName("Toshiba"); System.out.println("obj.name: " + obj.getName()); } }

Ausgabe:

obj.name: Toshiba

Konstruktor-Überladung mit this()

Wenn ein Konstruktor an einen anderen delegieren muss, führt this() einen expliziten Konstruktoraufruf durch:

class Komplex { private int a, b; private Komplex(int i, int j){ this.a = i; this.b = j; } private Komplex(int i){ this(i, i); // ruft den Zwei-Parameter-Konstruktor auf } private Komplex(){ this(0); // ruft den Ein-Parameter-Konstruktor auf } @Override public String toString(){ return this.a + " + " + this.b + "i"; } public static void main(String[] args) { Komplex c1 = new Komplex(2, 3); Komplex c2 = new Komplex(3); Komplex c3 = new Komplex(); System.out.println(c1); System.out.println(c2); System.out.println(c3); } }

Ausgabe:

2 + 3i 3 + 3i 0 + 0i

Wichtige Punkte:

Hinweis: Expliziter Konstruktoraufruf via this() muss die erste Anweisung im Konstruktor sein.

this als Argument übergeben

Da this ein Verweis auf das aktuelle Objekt ist, kann es an andere Methoden übergeben werden, sodass diese den Zustand des Objekts ändern können:

class ThisBeispiel { int x; int y; ThisBeispiel(int x, int y) { this.x = x; this.y = y; System.out.println("Vor Übergabe von this an addZwei() Methode:"); System.out.println("x = " + this.x + ", y = " + this.y); add(this); // aktuelle Instanz übergeben System.out.println("Nach Übergabe von this an addZwei() Methode:"); System.out.println("x = " + this.x + ", y = " + this.y); } void add(ThisBeispiel o){ o.x += 2; o.y += 2; } } class Haupt { public static void main(String[] args) { new ThisBeispiel(1, -2); } }

Ausgabe:

Vor Übergabe von this an addZwei() Methode: x = 1, y = -2 Nach Übergabe von this an addZwei() Methode: x = 3, y = 0

Hier erhält die add-Methode dieselbe Objektinstanz und aktualisiert deren Felder direkt.

Java

  1. C# this Schlüsselwort meistern
  2. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  3. Java Kommentare: Typen, Verwendung und Best Practices
  4. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  5. Java Konstruktoren meistern: Typen, Verwendung und praktische Beispiele
  6. Java Strings meistern: Erstellung, Methoden und Best Practices
  7. Java this-Schlüsselwort erklärt: Praktische Anwendungen, Konstruktoren und mehr
  8. Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
  9. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  10. Java-Kapselung meistern: Praktischer Leitfaden zum Datenverbergen