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

So verwendest du Inkrement und Dekrement Operatoren in deinen Java Programmen

Java Operatoren

In diesem Beitrag geht es um Java Operatoren. Ich möchte dir gern zwei neue Operatoren vorstellen. Diese nennen sich Inkrement und Dekrement. Ja was heißt das? Inkrementieren bedeutet eine schrittweise Erhöhung einer Zahl. Und dementsprechend bedeutet Dekrementieren: Die schrittweise Verminderung einer Zahl. Wozu brauchst du das? Stell dir vor. Du bekommst eine Liste mit Namen […]

So lassen sich Java Strings in char zerlegen

Java Strings zerlegen char

Java Strings sind Zeichenketten. Und diese Zeichenketten lassen sich aufsplitten und in ihre Einzelteile zerlegen. Ich möchte dir in diesem Beitrag Möglichkeiten vorstellen, wie du Strings in Character-Datentypen zerlegen, extrahieren und die Einzelteile in Arrays speichern kannst.

Java Übung: Alles beginnt mit Hello World

Java Übung Hello World

Alles beginnt mit „Hello World“. Sämtliche Java Bücher beginnen mit diesem ersten Beispiel. Auch die Java Übungen sollen mit diesem ersten Programm starten. Definiere eine Klasse „Hello World“. Implementiere die Main Methode. Die Main Methode soll bei Programmaufruf die Bildschirmanzeige „Hallo Welt“ zurückgeben. Die Lösung zur Java Übung „Hallo Welt“ public class HelloWorld{ public static […]

Lassen wir Java rechnen – Die Rechenoperationen für Variablen

Java rechnen

Ich liebe Mathe. In der Biographie „Der Mann, der die Zahlen liebte“, stellt Paul Hoffmann das Mathematikgenie Paul Erdös vor. Erdös war eines der größten Genies des 20 Jahrhunderts. Er arbeitete mit zahlreichen Wissenschaftlern zusammen und verfasste durchschnittlich mehr Publikationen im Jahr, als andere Mathematiker im ganzen Leben. Da Erdös sich mit sehr vielen Theoremen […]

So kannst du ein neues Java Projekt mit Eclipse anlegen und konfigurieren

Java Projekt anlegen Eclipse

In diesem Beitrag möchte ich dir zeigen, wie du ein neues Java Projekt mit Eclipse anlegen kannst. Ich werde dir außerdem einen kurzen Überblick über die Konfigurationsmöglichkeiten geben. Dann gebe ich dir noch eine ganz einfache Schritt-für-Schritt-Anleitung für dein allererstes Java Projekt und ich zeige dir, was nach dem Anlegen des Projektes eigentlich passiert ist.

Die sechs Bestandteile von Java Methoden

Java Methoden Bestandteile

Java Methoden hauchen deinem Java Programm Leben ein. Ohne eine Methode würde deine Java Klasse ein starres Konstrukt sein. Deine Objekte hätten Eigenschaften. Aber sie könnten nichts machen. Und das wäre eine trostlose Welt. Java Methoden sorgen also dafür, dass Objekte interagieren. Methoden bestehen aus bestimmten Bausteinen. Und diese Bausteine bestimmen, was die Methode darf […]

So kannst du zweidimensionale Java Arrays anlegen und nutzen

Java Arrays zweidimensional

Eines der bedeutendsten Instrumente in der Mathematik ist das Koordinatensystem. Die gedankliche Grundlage dieses Werkzeuges lieferte der französische Naturwissenschaftler und Philosoph Rene Descartes. Man muss sich einmal verdeutlichen, was dies für die damalige Zeit bedeutete. Bisher wurden mathematische Probleme lediglich durch Berechnungen gelöst. Denke an geometrische Figuren, wie Dreiecke und Vierecke. Der Umfang wurde lediglich […]

Java Objekte leben auf dem Heap

Java-Objekte-Heap

Java hat eine interne Speicherverwaltung. Eigentlich ist es nicht nur eine. Es sind mehrere.   Uns interessieren nur zwei. Methoden und lokale Variablen werden auf dem Stack verwaltet. Und die Speicherverwaltung für Java Objekte und den Instanzvariablen findet auf dem Heap statt.   Ja wieso braucht Java eigentlich zwei Speichersysteme?   Es ist ganz einfach. […]

Java Strings landen im String Constant Pool

Java-Strings-Pool

Du kennst das. Es ist abends. Du sitzt gemütlich vor dem Fernseher. Das Smartphone bimmelt. Kein Anruf. Nein – Eine Nachricht. Du liest die Nachricht sofort und antwortest darauf. Minuten später bekommst du die nächste Nachricht. Und auch auf diese antwortest du. Im Laufe des Abends entsteht daraus eine nette kleine Konversation. Und eh du […]

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 […]