Hä was hat dieser Konstruktor zu bedeuten?

... komplette Frage anzeigen

6 Antworten

Instanz-Variablen wie:

private Brett brett;


sollten so gut wie immer private (mit Vererbung ggf. protected) sein. Das sorgt für eine gewisse Ordnung und Konvention an die man sich halten sollte. 

Hätte die Variable einen anderen Zugriff wie public, könnten direkte Zugriffe von außen  (also anderen Klassen) für ein kleines Chaos sorgen.

Solltest du den Zugriff auf diese Variable von Außen benötigen, so sind Getter und Setter sinnvoll:

public Brett getBrett() {
   return this.brett;
}
public void setBrett(Brett brett) {
   this.brett = brett;
}

Wobei du natürlich nur dann Getter und Setter verwendest, wenn du bewusst eine Variable nach außen preisgeben oder ändern willst. - Auch andere Vorteile wie Listener oder Eingabe-Validierungen sind hierüber leichter realisierbar.


Was deine andere Frage betrifft, so geht es erstmal um das Stichwort:

this

schreibt man this. vor eine Variable oder Methode, so ist damit immer die Variable oder Methode der aktuellen Instanz gemeint.

Parameter können in Java genauso heißen wie Instanz-Variablen, weshalb du bei deinem Konstruktor den Parameter mit dem Namen: "brett" hast sowie die Instanzvariable: "brett".


public Feld (Brett brett) {
this.brett = brett;
}


stehen einem in einer Methode oder einem Konstruktor beide Variablen zur Verfügung: Also eine Instanz-Variable und ein Parameter (oder lokale Variable) mit dem selben namen, so zeigt die Variable:


  • Die ohne this angesprochen wird auf den Parameter (oder lokale Variable)
  • Die mit this angesprochen wird auf deine Instanz-Variable.


Antwort bewerten Vielen Dank für Deine Bewertung

Es ist eigentlich relative einfach.
private Brett brett erstellt eine neue Variable die an das Objekt gebunden ist.
Sie ist auf private gestellt damit man nicht von außen drauf zugreifen kann.
Es ist oftmals besser eigene getter/setter Methoden zu schreiben um die Variablen zu ändern.

Ein Konstruktor wird beim Erzeugen eines Objektes (new ...) immer automatisch aufgerufen. Dieser Konstruktor verlangt hier einen Parameter und überschreibt übrigens den Standartkonstruktor, welcher keine Parameter hat.

Das Schlüsselwort this referenziert das aktuelle Objekt. Deswegen ist this.brett die private Variable! Dies ist notwendig da Java nicht weiß welche Variable gemeint ist.

this.brett = brett Weise den Parameter brett der privaten Variable brett zu.

Falls noch Fragen offen sind einfach melden, schreibe hier gerade am Handy und weiß nicht wie die Antwort rüber kommt.

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn Java nicht grundlegend anders als C# ist meint this nicht das Stackobjekt (In den Klammern) sondern das private Objekt außerhalb der Methode. This bezieht sich auf die Klasse in der das this steht.

Das folgende, markierte Objekt bezieht sich auf das Objekt in der Klammer

this.brett = brett;

Der Code bedeutet, dass die Klasse dessen Konstruktor aufgerufen wird das übergebene Objekt (aus der Klammer) als Eigenschaft bekommt.

Antwort bewerten Vielen Dank für Deine Bewertung

Dem Feld wird bei der Initialisierung einfach ein Brett zugewiesen, welches dann die globale Variable "brett" ist. this.brett, weil es die Variable sozusagen zweimal gibt; als globale und als Parameter.

Antwort bewerten Vielen Dank für Deine Bewertung

this.brett ist das private brett-Attribut. Ohne das this würde der Compiler das brett des Methodenkopfes nehmen.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?