was bedeutet this. bei Konstruktoren?

dt-schulte

Mitglied
Guten Abend allerseits.

Ich nutze gerade die ruhigen Tage und fasse meine bisherigen Javakentnisse als Klausurvorbereitung zusammen.

Bei einem Punkt komme ich gerade etwas ins Straucheln und zwar bei "this."

Meine bisherigen Konstruktoren kammen immer ohne "this" aus, jetzt finde ich aber in den Unterlagen meines Dozenten beim Thema Verkapselung in den settern und gettern immer

this.xyz = xyz ( bei den setMethoden)
bzw.
return this.xyz ( bei den dazugehörigen getMethoden)

und passend dazu die Instanzenvariable int xyz.

Ich verstehe nicht genau, warum ich this.blafoo nutzen muss. Ich habe einige Beiträge hier entdeckt, die von dem Verdecken von Variablen schreiben.. aber auch das will mir gerade nicht ganz einleuchten. Kann mir das jemand vielleicht mit Werten durchspielen?

Was passiert, wenn ich xyz beim Erstellen des Objektes z.b. den Wert 6 gebe. Wann kommt dann this. zum tragen und wann nicht.

Ich hoffe ihr versteht mein Problem 🙂

Danke für die Hilfe.

Grüße
 
Mit this.xyz sagst du explizit, dass die Variable xyz, von dem Objekt verwendet werden soll, also die Instanzvariable. Ohne this wird eben durch die Sichtbarkeit entschieden, welches xyz.
Java:
class Test {
  int xyz; // *
  public Test(int xyz) {
     this.xyz = xyz; // setze * auf den Wert des Parameters
     xyz = 10; // setze den Parameter auf 10, NICHT *
  }
}
 
Ích versuche zu verstehen. 😛

Also, ich bleib mal bei der 10 und ergänze den Code ein wenig.

Java:
class ausführen
{
public static void main(string[] args)
{
    Test a = new Test(10);
    System.out.println(a.getXyz);
}
}

class Test {
private int xyz;

public Test (int xyz)
{
this.xyz=xyz;
xyz= 15;
}

public void setXyz(int xyz)
{
  this.xyz = xyz;
}

public int getXyz()
{
return this.xyz;
}
}
Ausgabe der Konsole = 10?
Und wann und wie würde die 15 zum tragen kommen?
 
kleine Korrektur: getXyz() (du hast die klammern vergessen^^)
Die 15 führt dazu, dass die lokale Variable xyz den Wert 15 erhält. xyz ist eben nur lokal gültig, wenn die Methode also verlassen wird, existiert die variable nicht mehr.
 

Zurück
Oben