Skip to main content

Nutze das Keyword this für deine Java Konstruktoren

Es ist gemein.

Wahrscheinlich hast den Beitrag zu den lokalen Variablen gelesen.
Vielleicht hast du auch den Artikeln zum Anlegen und Überladen von Java Konstruktoren gelesen.

Und wenn du die beschriebene Inhalte selbst ausprobiert hast……
Dann hast du dir wahrscheinlich sehr viele lokale Variablennamen für die Parameterliste ausdenken müssen.

Das Problem ist das Shadowing der lokalen Variablen.

Und so sieht das Problem aus.


public class ThisReferenz {
int nummer;//Instanzvariable nummer wird deklariert
public ThisReferenz(int dieNummer) { // Konstruktor erwartet eine Zahl
nummer = dieNummer;// der Wert der lokalen Variable wird der Instanzvariablen zugewiesen
}
public static void main(String[] args) {
ThisReferenz ersteReferenz = new ThisReferenz(22); // Objekt wird erzeugt
System.out.println(ersteReferenz.nummer);// Konsolenausgabe zur Objektvariable
}
}

Die Zuweisung des Konstruktors bezieht sich nicht auf die äußere Instanzvariable.
Diese wird automatisch durch die innere lokale Variable überschattet (Variable in der Parameterliste).

Dadurch bist du gezwungen dir immer neue Variablennamen für die Parameterlisten auszudenken, welchen eben nicht überschattet werden.

In diesem Fall musste ich die Variable „dieNummer“ einführen.
Dann musste ich den Wert dieser Variable nehmen.
Und dann diesen Wert der Instanzvariable zuweisen.

Also immer fleißig neue Variablenamen ausdenken und somit dem Shadowing zu entgehen.
Und das ist mühselig und vor allem auch irgendwie unnütz.

Hier die gute Nachricht.

Es geht einfacher.
Java stellt dir ein Keyword zur Verfügung.
Mit diesem Keyword kannst du deinen Instanzvariablen die Werte aus den Parameterlisten direkt zuweisen.

Dieses Keyword heißt this.

Was macht das?
Jede Objektmethode und jedem Konstruktor steht automatisch eine Referenz bzw. ein Verweis auf sich selbst zur Verfügung.

Und dieser Verweis wird in der Variable this gespeichert.

Und so geht’s.
Lege in den Parameterliste eine lokale Variable an.
Der Datentyp und auch der Name entsprechen der Instanzvariablen.
Zur Zeit findet das Shadowing noch statt.


public class ThisReferenz {
int nummer;//Instanzvariable nummer wird deklariert
public ThisReferenz(int nummer) { //lokale Variable entspricht der Instanzvariablen
nummer = nummer;//Shadowing
}
public static void main(String[] args) {
ThisReferenz ersteReferenz = new ThisReferenz(22); // Objekt wird erzeugt
System.out.println(ersteReferenz.nummer);// Konsolenausgabe zur Objektvariable
}
}

Im Konstruktorrumpf verweist du durch das Keyword this auf die Objektvariable.
Und machst dann die Zuweisung.

Und so sieht der Code dazu aus.

public class ThisReferenz {
 int nummer;
 public ThisReferenz(int nummer) { //gleicher Name wie Objektvariable
 this.nummer = nummer;//Zuweisung mit this
 }
 public static void main(String[] args) {
 ThisReferenz ersteReferenz = new ThisReferenz(22);
 System.out.println(ersteReferenz.nummer);
 }
}



Zusammenfassung:

  • Aufgrund des Überschattens der lokalen Variablen musst du dir für deine Java Konstruktoren – Parameter neue Namen ausdenken.
  • Dies ist sehr umständlich und unnütz.
  • Durch das Keyword this kannst du dies umgehen.
  • Dabei solltest du darauf achten, dass die this-Anweisung die erste Anweisung im Konstruktorrumpf ist.

Hat dir der Artikel gefallen?
Na dann hinterlasse mir doch jetzt einen Kommentar.


Ähnliche Beiträge

Hier sind ein paar richtig nette Features, die dich beim Java lernen unterstützen

Java lernen Eclipse

Was ist das Wichtigste beim Einstieg in ein neues Wissensgebiet? Nein, kein gutes Sachbuch oder ein besonders guter Lehrer. Es ist Spaß. Beim Java Lernen brauchst du Spaß. Es gibt Lehrer, welche ihren Stoff so vermitteln, dass Lernen Spaß bereitet. Aber die Grundvoraussetzung ist und bleibt der Spaß. Und nichts ist so spaßhemmend wie Langeweile […]

So kannst du Instanzen in Java Klassen zählen

Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.

So einfach lassen sich Java Strings umkehren

Java Strings umkehren

Kennst du noch das Lied „ANNA“ von Freundeskreis? Da hieß es: Du bist von hinten, wie von vorne A-N-N-A. Solche Namen oder Wörter, welche von hinten nach vorne gelesen – die gleiche Bedeutung haben, nennt man Palindrome. Anna, Ehe oder Ebbe sind recht kurze Palindrome. Aber auch längere zusammengesetzte Palindrome kennt die deutsche Sprache: Regallager […]

Ende vom Java Blog?

Falls du hier schon länger dabei bist, wird dir aufgefallen sein – dass kaum noch Beiträge veröffentlicht werden. Das tut mir wirklich leid und dafür möchte ich mich auch entschuldigen. Ich weiß, dass Einige unter Euch den Java-Blog wirklich lieben. Aber es ist verdammt schwierig so ein aufwendiges Thema – stilvoll, unterhaltend und methodisch umzusetzen. […]

Java Duales Zahlensystem – Binäre Zahlen in Java umwandeln

Java Dual System

Das duale Zahlensystem hat viele Bezeichnungen. Oft wird auch es Dualsystem oder Binärsystem genannt. Es besteht aber immer aus 2 Zahlen. Man verwendet oft die Zahlen 0 und 1. Es können aber auch sämtliche anderen Zahlenpaare sein. Zum Beispiel 7 und 175 sind für sich genommen, auch ein normales Zahlenpaar und somit ein Dualsystem. Mit […]

Java Übung 11 – Java Objekte in Java Methoden übergeben

Java Übung Java Methoden Objekte

In dieser Java Übung möchte ich dir zeigen, dass du auch in Klassenmethoden auf Objekte und deren Instanzvariablen zugreifen kannst. Schau dir dazu einmal diesen Java Code an. public class Umwandlung { private int x; public int getX() { // getter Methode return x; } public void setX(int x) { // setter Methode this.x = […]

Die vier verschiedenen Zahlensysteme in der Java Programmierung

Java Zahlensysteme

Java Zahlensysteme – Was soll das? In sämtlichen Programmiersprachen werden Zahlen in Variablen abgespeichert. Wenn du dir die einzelnen primitiven Datentypen in Java einmal anschaust – wirst du feststellen – dass die Masse der Datentypen Zahlen annehmen und speichern können. Zahlen und die Mathematik dahinter spielen in der Programmierung eine sehr große Rolle. Ganz am […]

So kannst du deine Java Methoden ausführen

Java Methoden ausführen

Du hast die ersten Java Methoden erstellt. Doch wie greifst du jetzt auf diese zu? Wie kannst du diese Methoden in einer anderen Klassen aufrufen? Welcher Unterschied, hinsichtlich des Methodenaufrufes, besteht eigentlich zwischen deinen Java Methoden? Diese Fragen möchte ich gern in diesem Beitrag beantworten. Gehen wir dazu in den Garten und schauen uns Blumen […]

Nutze das Java Switch Case Statement für komplexe Verzweigungen

Java Switch case

Java switch case statement – was ist das? Wozu brauchst du das? Lass mich anders beginnen… 🙂 In einen meiner früheren Beiträge habe ich schon einmal über bedingte Anweisungen oder Zuweisungen geschrieben. Diese if und else Konstrukte funktionieren eigentlich ganz gut. Aber was ist, wenn du mehrere Parameter abfangen möchtest. Okay ein Beispiel…

10 ganz nützlichen Feature der Klasse Java Math

In diesem Beitrag geht es um eine spezielle Java Klasse. Die Klasse nennt sich Java Math. Diese ist in der Standardbibliothek von Java enthalten. Warum solltest du diese Klasse kennen? Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind. Aber auch für Nichtmathematiker ist etwas dabei. […]