Nutze das Keyword this für deine Java Konstruktoren
Kategorie(n): Java Konstruktor
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
Kategorie(n): Java Programmierung, 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 […]
Kategorie(n): Java String
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.
Kategorie(n): Java Übungen
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 […]
Kategorie(n): Java Programmierung
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 […]
Kategorie(n): Java Übungen
In dieser Java Übung geht es um Zahlen. Um genau zu sein…. Es geht um gerade und ungerade Zahlen.
Kategorie(n): 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.
Kategorie(n): Java Methoden
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 […]
Kategorie(n): Java Arrays
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 […]
Kategorie(n): Java Objekt
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. […]
Kategorie(n): Java String
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 […]
Kategorie(n): Java Mathe
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 […]
Kategorie(n): Java Übungen
In dieser Java Übung geht es um Objekte und es geht um Referenzvariablen. Es geht um den Zugriff auf Java Objekte durch mehr als eine Referenzvariable. Erstelle dazu eine Java Klasse, namens „ReferenzTest“. Dieser Klasse führt drei Instanzvariablen a, b und c, vom Datentyp Integer.