- 1 1. Einführung
- 2 3. Hauptanwendungsfälle von this
- 3 4. Wichtige Hinweise zur Verwendung von this
- 4 5. Praktische Codebeispiele
- 4.1 5.1 Unterscheidung von Member- und lokalen Variablen
- 4.2 5.2 Konstruktorverkettung
- 4.3 5.3 Methodenverkettung
- 4.4 5.4 Übergabe der aktuellen Instanz
- 4.5 6. Häufig gestellte Fragen (FAQ)
- 4.6 Q1. Muss ich immer „this“ schreiben?
- 4.7 Q2. Was passiert, wenn ich this in einer statischen Methode verwende?
- 4.8 Q3. Was ist der Unterschied zwischen this und super?
- 4.9 Q4. Was ist der Vorteil, this bei Methodenverkettung zurückzugeben?
- 4.10 Q5. Was passiert, wenn ich dies bei Bedarf vergesse zu verwenden?
- 4.11 7. Fazit
1. Einführung
Wenn du beginnst, Programmieren in Java zu lernen, wirst du auf verschiedene Schlüsselwörter stoßen. Unter ihnen spielt „this“ eine sehr wichtige Rolle beim Verständnis von Klassen und objektorientierten Konzepten. Da das Wort „this“ im Englischen einfach „dies/ dieses“ bedeutet, finden viele Anfänger zunächst nicht klar, warum es in der Programmierung verwendet wird.
Dieser Artikel erklärt die Rolle und Verwendung des „this“-Schlüsselworts in Java auf klare und einsteigerfreundliche Weise. Du lernst zentrale Punkte wie die Unterscheidung zwischen Instanzvariablen und lokalen Variablen und die Verwendung von „this“ in Konstruktoren, zusammen mit praktischen Codebeispielen.
Wir behandeln außerdem häufige Fragen, Fehler und wichtige Hinweise. Am Ende dieses Leitfadens verstehst du, wie das Schlüsselwort this funktioniert und kannst es sicher von einfachen bis zu fortgeschrittenen Szenarien einsetzen.
2. Was ist das „this“-Schlüsselwort?
In Java bezieht sich „this“ auf das aktuelle Objekt selbst. Wenn aus einer Klasse eine Instanz (ein Objekt) erzeugt wird, wird das Schlüsselwort „this“ verwendet, um auf genau dieses Objekt zu verweisen.
Selbst wenn mehrere Objekte derselben Klasse erstellt werden, verweist jedes Objekt‑this auf eine andere Instanz. Das hilft, innerhalb deines Codes zu verdeutlichen, „auf welches Objekt gerade zugegriffen wird“.
Die Grundfunktionen von this
- Zugriff auf Instanzvariablen und -methoden – Mit
this.variableNameoderthis.methodName()greifst du auf die Variablen und Methoden des jeweiligen Objekts zu. - Unterscheidung zwischen lokalen Variablen und Instanzvariablen – Wenn Konstruktor‑ oder Methodenparameter denselben Namen wie Member‑Variablen haben, wird „this“ verwendet, um sie zu unterscheiden.
Warum benötigen wir „this”?
In Java kannst du aus einer einzigen Klasse mehrere Objekte erzeugen, die jeweils einen eigenen Zustand und eigenes Verhalten besitzen. Innerhalb dieser Objekte brauchst du eine Möglichkeit, „dieses spezielle Objekt“ zu referenzieren. Genau das erledigt das „this“-Schlüsselwort.
Beispiel: In einer Klasse Person ermöglicht dir „this“, „dieses bestimmte Person‑Objekt“ zu adressieren.
Zusammenfassung
„this“ ist ein sehr wichtiges Konzept in der objektorientierten Programmierung. Es fungiert als Brücke, die einem Objekt den Zugriff auf seine eigenen Daten und sein Verhalten ermöglicht.
3. Hauptanwendungsfälle von this
Das „this“-Schlüsselwort taucht an vielen Stellen in Java auf. Nachfolgend findest du repräsentative Beispiele mit Code‑Snippets.
3.1 Unterscheidung von Member‑Variablen und lokalen Variablen
Java verwendet häufig dieselben Namen für Konstruktor‑Parameter und Member‑Variablen. In solchen Fällen unterscheidet „this“ sie.
Beispiel: Unterscheidung von Member‑Variablen und lokalen Variablen
public class Student {
private String name;
public Student(String name) {
this.name = name; // Left: member variable, Right: constructor parameter
}
}
Wenn du this weglässt, hat die lokale Variable Vorrang, und die Member‑Variable wird nicht korrekt zugewiesen.
3.2 Verwendung von this in Konstruktoren
Java erlaubt mehrere Konstruktoren durch Überladen. Du kannst einen anderen Konstruktor mit this() aufrufen, um Redundanz zu vermeiden.
Beispiel: Aufruf eines anderen Konstruktors mit this()
public class Book {
private String title;
private int price;
public Book(String title) {
this(title, 0); // calls another constructor
}
public Book(String title, int price) {
this.title = title;
this.price = price;
}
}
Damit lässt sich die Initialisierungslogik zentralisieren und doppelter Code wird vermieden.
3.3 Method Chaining
Durch Rückgabe von this wird es möglich, Methoden nacheinander auf derselben Instanz aufzurufen.
Beispiel: Method Chaining
public class Person {
private String name;
private int age;
public Person setName(String name) {
this.name = name;
return this;
}
public Person setAge(int age) {
this.age = age;
return this;
}
}
// Method chaining
Person p = new Person().setName("佐藤").setAge(25);
Dies wird häufig in Builder‑Mustern und Konfigurationsklassen verwendet.
3.4 Übergabe der aktuellen Instanz
Sie können „this“ verwenden, wenn Sie die aktuelle Instanz an eine andere Methode oder Klasse übergeben müssen.
Beispiel: Übergabe des aktuellen Objekts
public class Printer {
public void print(Person person) {
System.out.println(person);
}
}
public class Person {
public void show(Printer printer) {
printer.print(this); // passes this instance
}
}
4. Wichtige Hinweise zur Verwendung von this
Obwohl sehr nützlich, muss „this“ vorsichtig eingesetzt werden, um Fehler zu vermeiden.
4.1 this kann in statischen Kontexten nicht verwendet werden
Eine static‑Methode oder -Variable gehört zur Klasse selbst – nicht zu einer Instanz – daher kann „this“ nicht verwendet werden.
Ungültiges Beispiel
public class Example {
private int value;
public static void printValue() {
// System.out.println(this.value); // Compile error
}
}
4.2 Übermäßiger Einsatz von this kann die Lesbarkeit verringern
Die unnötige Verwendung von „this“ kann den Code schwerer lesbar machen. Verwenden Sie es nur, wenn es nötig ist.
Beispiel für unnötige Verwendung
public class Test {
private int x;
public void setX(int x) {
this.x = x; // needed
// this.x = this.x + 1; // excessive use
}
}
4.3 Verwechseln Sie this nicht mit super
- this → die aktuelle Instanz
- super → die übergeordnete Klasse (Superklasse)
Beispiel: Verwendung von this vs super
public class Parent {
public void greet() {
System.out.println("Parent method");
}
}
public class Child extends Parent {
public void greet() {
System.out.println("Child method");
super.greet();
}
}
5. Praktische Codebeispiele
5.1 Unterscheidung von Member- und lokalen Variablen
public class Account {
private String owner;
public Account(String owner) {
this.owner = owner;
}
public void printOwner() {
System.out.println("Account Owner: " + this.owner);
}
}

5.2 Konstruktorverkettung
public class Rectangle {
private int width;
private int height;
public Rectangle(int width) {
this(width, 1);
}
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
public void printSize() {
System.out.println("Size: " + width + " x " + height);
}
}
5.3 Methodenverkettung
public class BuilderExample {
private String name;
private int age;
public BuilderExample setName(String name) {
this.name = name;
return this;
}
public BuilderExample setAge(int age) {
this.age = age;
return this;
}
public void printInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
BuilderExample person = new BuilderExample().setName("山田").setAge(30);
person.printInfo();
5.4 Übergabe der aktuellen Instanz
public class Notifier {
public void notifyUser(User user) {
System.out.println(user.getName() + " has been notified.");
}
}
public class User {
private String name;
public User(String name) { this.name = name; }
public String getName() { return this.name; }
public void sendNotification(Notifier notifier) {
notifier.notifyUser(this);
}
}
Notifier notifier = new Notifier();
User user = new User("佐藤");
user.sendNotification(notifier);
6. Häufig gestellte Fragen (FAQ)
Q1. Muss ich immer „this“ schreiben?
A.
Nicht immer. Verwenden Sie es, wenn:
- lokale und Member‑Variablennamen sich überschneiden
- Sie die aktuelle Instanz explizit referenzieren möchten
Q2. Was passiert, wenn ich this in einer statischen Methode verwende?
A.
Sie erhalten einen Kompilierungsfehler. Statische Methoden gehören zur Klasse, nicht zu einer Instanz.
Q3. Was ist der Unterschied zwischen this und super?
- this : die aktuelle Instanz
- super : die übergeordnete Klasse
Q4. Was ist der Vorteil, this bei Methodenverkettung zurückzugeben?
Es ermöglicht aufeinanderfolgende Aufrufe auf derselben Instanz und verbessert die Lesbarkeit.
Q5. Was passiert, wenn ich dies bei Bedarf vergesse zu verwenden?
Lokale Variablen können Member‑Variablen überschreiben, was zu falschen Zuweisungen und Bugs führt.
7. Fazit
Dieser Artikel erklärte das Java‑„this“‑Schlüsselwort von den Grundlagen bis zur praktischen Anwendung. Sie haben gelernt:
- Wie man Member‑Variablen und lokale Variablen unterscheidet
- Wie man Konstruktorlogik zentralisiert
- Wie man Methodenketten erstellt
- Wie man die aktuelle Instanz an andere Methoden übergibt
Wir haben außerdem wichtige Hinweise behandelt, wie zum Beispiel:
- „this“ kann in statischen Kontexten nicht verwendet werden
- Verwenden Sie „this“ nicht zu häufig
- Verwenden Sie es korrekt zusammen mit „super“
Das Verständnis, wie „this“ funktioniert, macht das Design Ihrer Java‑Klassen klarer und reduziert Bugs. Erkunden Sie weiterhin die Java‑Grundlagen und wenden Sie diese Konzepte im echten Code an.
