20% off with code ERSTIS26
5 min read 15 Jul 2026

Java this Keyword einfach erklärt: So nutzt du es richtig

Das Java this Keyword referenziert das aktuelle Objekt. Lerne, wie du es in Konstruktoren und Methoden einsetzt – perfekt für IT-Lernende!

Marcel Schmidtpeter By Marcel Schmidtpeter 15 Jul 2026
Java this Keyword einfach erklärt: So nutzt du es richtig

Stell dir vor, du schreibst einen Konstruktor für eine Klasse `Auto`. Du hast eine Instanzvariable namens `marke` und einen Parameter, der genauso heißt. Dein Code kompiliert, aber die Werte landen nie im Objekt - alles bleibt `null`. Genau hier rettet dich das Java `this` Keyword.

Egal ob du als Fachinformatiker-Azubi deine erste Klasse schreibst, im Informatikstudium OOP-Klausuren meisterst oder im ersten Job Legacy-Code wartest - `this` ist eines der ersten Schlüsselwörter, das du verinnerlichen musst. Warum? Weil es grundlegend für saubere Objektorientierung ist und in nahezu jedem echten Java-Projekt auftaucht.

Was ist das Java this Keyword?

`this` ist ein Schlüsselwort in Java, das als Referenz auf das aktuelle Objekt dient - also auf diejenige Instanz einer Klasse, in deren Kontext der Code gerade ausgeführt wird. Wenn du ein Objekt von einer Klasse erstellst, existiert `this` automatisch und zeigt auf genau dieses eine Objekt.

Stell dir vor, du bist in einem Meeting und jemand sagt "Ich". Jede Person im Raum meint mit "Ich" sich selbst. Genau so funktioniert `this`: Es ist das "Ich" des aktuellen Objekts. Jede Instanz einer Klasse hat ihr eigenes `this`.

Merke: `this` ist keine Variable, die du zuweisen kannst. Es ist eine fest eingebaute Referenz, die Java automatisch zur Verfügung stellt.

Wofür nutzt man this in Java? Die drei Hauptverwendungen

Es gibt drei klassische Einsatzgebiete für `this`, die du beherrschen musst:

Verwendung

Beschreibung

Typisches Szenario

Attributzuweisung

Unterscheidet Instanzvariablen von Parametern mit gleichem Namen

Konstruktoren und Setter

Konstruktoraufruf

Ruft einen anderen Konstruktor der gleichen Klasse auf

Code-Vermeidung bei überladenen Konstruktoren

Methoden-/Objektübergabe

Gibt die aktuelle Instanz an andere Methoden weiter

Event-Handling, Builder-Pattern

Schauen wir uns jeden Fall im Detail an.

Wie unterscheidet this Attribut und Parameter?

Der häufigste Anwendungsfall des Java `this` Keywords: Du hast eine Instanzvariable (auch Attribut oder Feld genannt - das ist eine Variable, die zum Objekt gehört) und einen Parameter im Konstruktor, die den gleichen Namen tragen. Ohne `this` weiß Java nicht, welche Variable du meinst.

Hier ist das Problem - falsch:

java
public class Auto {

  private String marke;

  public Auto(String marke) {
    marke = marke; // Das macht NICHT was du denkst!
  }
}

Was passiert hier? Java ordnet das `marke` auf der linken Seite dem Parameter zu, nicht dem Attribut. Der Parameter weist sich also selbst zu. Das Attribut bleibt `null`. Das nennt man Shadowing (dt. Beschattung) - der Parameter "überschattet" das Attribut, weil er näher im Scope (Gültigkeitsbereich) liegt.

Hier ist die Lösung - richtig:

java
public class Auto {

  private String marke;

  public Auto(String marke) {
    this.marke = marke; // this.marke = Attribut, marke = Parameter
  }
}

Merke: `this.attribut` referenziert immer die Instanzvariable, das nackte Wort referenziert den Parameter. Ohne `this` bei Namensgleichheit erzeugt Java keine Fehlermeldung - der Bug schleicht sich unbemerkt ein.

Warum nutzt man überhaupt die gleichen Namen? Weil es die Lesbarkeit erhöht. `marke` ist aussagekräftiger als `pMarke` oder `markeParam`. Saubere Namenskonventionen sind wichtiger als künstliche Präfixe. Die offizielle Oracle Java Documentation empfiehlt diesen Stil ebenfalls.

Wie ruft man mit this() einen anderen Konstruktor auf?

Mit `this()` kannst du einen anderen Konstruktor derselben Klasse aufrufen. Konstruktoren sind spezielle Methoden, die beim Erstellen eines Objekts aufgerufen werden und den Anfangszustand setzen. Bei mehreren überladenen Konstruktoren vermeidest du so Code-Duplikation.

java
public class Mitarbeiter {

  private String name;
  private int alter;
  private String abteilung;

  // Konstruktor mit allen Parametern
  public Mitarbeiter(String name, int alter, String abteilung) {
    this.name = name;
    this.alter = alter;
    this.abteilung = abteilung;
  }

  // Konstruktor mit nur Name und Alter
  public Mitarbeiter(String name, int alter) {
    this(name, alter, "Allgemein"); // Ruft den oberen Konstruktor auf
  }

  // Default-Konstruktor
  public Mitarbeiter() {
    this("Unbekannt", 0); // Ruft den mittleren Konstruktor auf
  }
}

Wichtig: `this()` muss immer die erste Anweisung in einem Konstruktor sein. Setzt du Code davor, kompiliert das Programm nicht.

Das Konzept nennt sich Constructor Chaining (Konstruktorverkettung) - ein Konstruktor ruft den nächsten auf, bis der vollständigste Konstruktor alle Attribute setzt. In Prüfungen und im Beruf wird dieser Fall regelmäßig abgefragt.

Wann übergibt man this als Methodenargument?

Manchmal muss ein Objekt sich selbst an eine andere Methode oder ein anderes Objekt übergeben. Das ist besonders im Builder-Pattern oder bei Event-Listenern relevant. `this` dient dann als Brücke zwischen Objekten.

java
public class Fenster {

  public void zeigeAn() {
    System.out.println("Fenster wird angezeigt");
  }

  public void registriereBei(Anwendung app) {
    app.fuegeFensterHinzu(this); // Uebergibt sich selbst an die Anwendung
  }
}

Hier übergibt `this` das aktuelle `Fenster`-Objekt an die Methode `fuegeFensterHinzu`. Stell dir vor, du meldest dich bei einer Behörde an - du sagst "Ich möchte registriert werden" und übergibst deine eigenen Daten. Genau das macht das Objekt mit `this`.

Ein weiterer häufiger Fall: `this` als Rückgabewert. Das ist die Grundlage für Method Chaining und Fluent Interfaces.

Praxisbeispiel: Eine komplette Klasse mit this

Hier ist ein vollständiges, nachvollziehbares Beispiel, das alle Verwendungen kombiniert. Du kannst es direkt in deiner IDE (Entwicklungsumgebung, also dem Programm, in dem du Code schreibst - z.B. IntelliJ IDEA oder Eclipse) ausführen:

java
public class Smartphone {

  private String marke;
  private String modell;
  private double preis;

  // Vollstaendiger Konstruktor
  public Smartphone(String marke, String modell, double preis) {
    this.marke = marke;
    this.modell = modell;
    this.preis = preis;
  }

  // Vereinfachter Konstruktor — Preis default 0
  public Smartphone(String marke, String modell) {
    this(marke, modell, 0.0); // Constructor Chaining
  }

  // Setter mit this
  public void setPreis(double preis) {
    if (preis >= 0) {
      this.preis = preis;
    } else {
      System.out.println("Preis darf nicht negativ sein!");
    }
  }

  // this als Rueckgabewert (fuer Builder-Pattern)
  public Smartphone mitRabatt(double prozent) {
    this.preis = this.preis * (1.0 - prozent / 100.0);
    return this; // Gibt das eigene Objekt zurueck
  }

  public void zeigeInfo() {
    System.out.println(marke + " " + modell + " - " + preis + " Euro");
  }

  public static void main(String[] args) {
    Smartphone handy = new Smartphone("Samsung", "Galaxy S24", 999.99);
    handy.mitRabatt(10).zeigeInfo(); // Method Chaining dank return this
    // Ausgabe: Samsung Galaxy S24 - 899.991 Euro
  }
}

Das Method Chaining (Methodenverkettung) am Ende funktioniert nur, weil `mitRabatt` mit `return this` das eigene Objekt zurückgibt. So kannst du mehrere Methoden hintereinander mit Punkt-Notation aufrufen.

Welche Fehler solltest du bei this vermeiden?

Drei Fehler tauchen bei Anfängern immer wieder auf. Wenn du diese kennst, sparst du dir stundenlanges Debugging.

Fehler 1: this() nicht als erste Anweisung

java
public class Beispiel {

  private int wert;

  public Beispiel(int wert) {
    this.wert = wert;
  }

  public Beispiel() {
    System.out.println("Erstelle Objekt...");
    this(5); // FEHLER! this() muss an erster Stelle stehen
  }
}

Der Compiler wirft: `call to this must be first statement in constructor`. Lösung: Setze `this(5)` vor das `System.out.println`.

Fehler 2: this in einer static-Methode verwenden

Statische Methoden gehören zur Klasse, nicht zu einem Objekt. Da `this` aber das aktuelle Objekt referenziert, gibt es in `static`-Methoden kein `this`.

java
public class Rechner {

  public static void berechne() {
    // this.irgendwas(); // FEHLER! this existiert hier nicht
    System.out.println("Statische Methoden haben kein this");
  }
}

Warum? Weil du eine statische Methode aufrufen kannst, ohne jemals ein Objekt erstellt zu haben. Wo soll `this` hinzeigen, wenn kein Objekt existiert? Mehr zum Thema `static` findest du in unserem Beitrag zum Java static Keyword.

Fehler 3: this zuweisen wollen

java
public class Kaputt {

  public void methode() {
    this = new Kaputt(); // FEHLER! this ist final, nicht zuweisbar
  }
}

`this` ist keine Variable - es ist eine feste Referenz. Du kannst sie lesen, aber nie überschreiben.

Übungstipp: this selbst ausprobieren

Nimm dir 10 Minuten Zeit und baue folgendes:

  1. Erstelle eine Klasse `Buch` mit den Attributen `titel`, `autor` und `seiten`.

  2. Schreibe drei Konstruktoren: einen mit allen drei Parametern, einen mit zwei (Seiten default 100) und einen Default-Konstruktor (leeres Buch).

  3. Nutze `this()` für Constructor Chaining.

  4. Schreibe einen Setter für `seiten`, der `this.seiten` nutzt und negative Werte abfängt.

Wenn du das ohne Compiler-Fehler hinbekommst, hast du `this` verstanden. Falls nicht - kein Problem, weiter unten findest du Hilfe.

FAQ: Häufige Fragen zum Java this Keyword

Kann man this auch weglassen?

Ja, wenn es keine Namenskonflikte gibt. Bei `this.marke = marke` ist `this` zwingend nötig. Bei `this.zeigeInfo()` kannst du es weglassen, weil es keine lokale Variable `zeigeInfo` gibt. Viele Entwickler schreiben es trotzdem für bessere Lesbarkeit.

Was ist der Unterschied zwischen this und super?

`this` referenziert das aktuelle Objekt, `super` referenziert die Elternklasse (die Klasse, von der geerbt wird). Du nutzt `super`, um Methoden oder Konstruktoren der Oberklasse aufzurufen. Mehr dazu in unserem Artikel zu Java Vererbung.

Funktioniert this in static-Methoden?

Nein. Statische Methoden gehören zur Klasse, nicht zu einer Instanz. Ohne Instanz gibt es kein Objekt, auf das `this` zeigen könnte. Der Compiler wirft in diesem Fall einen Fehler.

Was bedeutet return this?

Die Methode gibt das eigene Objekt zurück. Das ermöglicht Method Chaining - du kannst Methoden verketten wie `objekt.methode1().methode2()`. Das ist besonders im Builder-Pattern und bei Fluent Interfaces verbreitet.

Ist this das gleiche wie self in Python?

Konzeptionell ja, mit einem wichtigen Unterschied: In Python musst du `self` explizit als ersten Parameter definieren, in Java gibt `this` Java automatisch mit. Du musst nie `this` als Parameter übergeben.

Fazit

Das Java `this` Keyword ist simpel im Konzept, aber extrem vielseitig in der Praxis. Die drei Kernanwendungen - Attributzuweisung bei Namensgleichheit, Konstruktorverkettung mit `this()` und Objektübergabe - begegnen dir in jedem echten Java-Projekt. Behalte die drei häufigen Fehler im Kopf, besonders die Regel, dass `this()` immer die erste Anweisung sein muss und `this` in statischen Methoden nicht existiert.

Wenn du diese Grundlagen einmal verstanden hast, wird dir `this` immer vertraut vorkommen - egal ob in der Abschlussprüfung zum Fachinformatiker, in der OOP-Klausur im Studium oder beim Code-Review im ersten Job. Für tiefergehende Details lohnt sich ein Blick in die offizielle Oracle Java Language Specification.

Hängst du an einem konkreten Java-Problem fest? Ob `this`-Fehler, Konstruktoren, Vererbung oder ein ganz anderes Thema - bei study-it.education bekommst du eins-zu-eins IT-Nachhilfe von erfahrenen Entwicklern, die genau wissen, wo Azubis, Studenten und Berufseinsteiger hängen. Schau vorbei und bring deine Java-Kenntnisse aufs nächste Level.


First chat · 0 € · 30 min

Need someone to walk through this with you?

Instead of re-reading: 30 min with a senior dev.

Book a free first chat →
About the author
Marcel Schmidtpeter
Marcel Schmidtpeter

Das Java this Keyword referenziert das aktuelle Objekt. Lerne, wie du es in Konstruktoren und Methoden einsetzt – perfekt für IT-Lernende!

marcel.schmidtpeter@study-it.education →
Keep reading

More reading