Was bedeutet This. ?

JavaTamara

Mitglied
Guten morgen liebes Forum,

eine wahrscheinlich ganz einfach zu beantwortende Frage, nur leider bin ich im Internet nirgends darauf gestoßen!

Was bedeutet eigentlich das this. , dass man im Programmcode häufig schreibt?

Liebe Grüße,

JavaTamara
 
Typischer Anwendungsfall ist im Konstruktor:

Java:
public class Foo {
   private String name; //<---- eine Member-Variable 

   public Foo(String name) {  //<----- ein gleichnamiges Argument
       //Wie soll man jetzt die beiden "name"-Variablen unterscheiden?
       //"this" kann man lesen als "mein Member...", bezogen auf das Objekt, in dem der Code ausgeführt wird 
      this.name = name; //Aha, vorn ist die Member-Variable, hinten das Argument
   }
}

Ein weiterer Fall ist, wenn ein Objekt "sich selbst" zurückgeben will. Z.B. sieht die [c]toString[/c]-Methode der Klasse String so aus:

Java:
public final class String {
   ...

   public String toString() {
       return this; //der String gibt "sich selbst" als Wert zurück
   }
}
 
Zuletzt bearbeitet:
Mal für Laien verständlich erklärt:

Java:
this
bedeutet im übertragenen Sinne sozusagen, aus der Perspektive eines Objekts:"Ich bin ein... und habe...".

Wenn du z.B. hast:

Java:
public class Haus extends Gebaeude{

public Haus(){
this.stockwerke = 3;
}

}

Wenn du eine Instanz von Haus hast, so bezieht sich das Haus mit
Java:
this
auf sich selbst.
"stockwerke" ist eine Member-Variable von Gebäude. (Achtung: Zugriff so wie oben geht nur wenn NICHT private).
Es sagt: "Ich bin ein Haus und auch ein Gebäude und habe somit Stockwerke".
 
So wie ihr das beschreibt, wird es auch immer in Büchern beschrieben, das meiste Augenmerk auf die überdeckten Variablen und der eine Satz "this gibt die Referenz auf die Instanz des aktuellen Objekts" sagt einem Anfänger meist recht wenig (eigene Erfahrung)^^

Wichtig ist this ganz besonders, wenn ein Objekt ein anderes instanziert und dann dieses neue Objekt mit dem alten kommunizieren soll:

Java:
public class Hallo {
  public Hallo() {
     new Welt(this);
  }

  public void test() {
    System.out.println("Ich werde aufgerufen");
  }
}

class Welt {
  public Welt(Hallo h) {
    h.test();
  }
}

Welt erwartet ein Objekt vom Typ h, um an diesem test aufzurufen. Durch this kann das Hallo-Objekt sich selbst dafür übergeben.
 

Neue Themen


Zurück
Oben