Skip to main content

So kannst du deinen Java Konstruktoren ein Objekt übergeben

Du kannst deinen Java Konstruktoren auch Objekte übergeben.
Bisher haben wir in der Parameterliste lediglich primitive Datentypen übergeben.

So sah das aus.

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

Du hast eine Klasse mit einem Konstruktor.
Dieser bekommt beim Aufruf ein Argument (in diesem Fall 22) übergeben.
Dann weist der Konstruktor im Rumpf diesen Argumentwert der Instanzvariable zu.
Fertig.

Legen wir einen zweiten Konstruktor für die Java Klasse an.
Und dieser soll jetzt das erste Objekt als Argument übergeben bekommen.

So geht’s

public class ThisReferenz {
 int nummer;
 
 public ThisReferenz(int nummer) { 
 this.nummer = nummer;//Zuweisung mit this
 }
 
 public ThisReferenz(ThisReferenz erstelltesObjekt){ //Konstruktor erwartet Objekt
 this.nummer=erstelltesObjekt.nummer;
 }
 public static void main(String[] args) {
 ThisReferenz ersteReferenz = new ThisReferenz(22);
 ThisReferenz zweiteReferenz = new ThisReferenz(ersteReferenz);//zweites Objekt
 System.out.println(ersteReferenz.nummer);
 System.out.println(zweiteReferenz.nummer);//Ausgabe der Instanzvariablen
 }
}

Du kannst einen zweiten Java Konstruktor anlegen und somit den ersten überladen.
Du kannst dann dem zweiten Konstruktor ein Objekt in der Parameterliste übergeben.

Das Objekt ist eigentlich eine Variable vom Datentyp der Klasse.
In diesem Fall ist der Datentyp „ThisReferenz“.
Den Namen der Variable kannst du frei wählen.

Im Rumpf des Konstruktors kannst du dann die Zuweisung mit dem Keyword this vornehmen.
Wichtig dabei ist, dass du dich dann auf die Referenzvariable beziehst, welche du in der Parameterliste übergeben hast.
this.nummer=erstelltesObjekt.nummer;

Natürlich kannst du zum Objekt weitere lokale Variablen übergeben

Lass uns rechnen.

Wir übergeben einem dritten Konstruktor noch eine lokale Variable vom Datentyp Integer.
Und diese lokale Variable wird dann mit der Instanzvariablen multipliziert.

Und so sieht es dann aus.

public class ThisReferenz {
 int nummer;
 
 public ThisReferenz(int nummer) { 
 this.nummer = nummer;//Zuweisung mit this
 }
 
 public ThisReferenz(ThisReferenz erstelltesObjekt, int faktor){ //Konstruktor erwartet Objekt und lokale Variable
 this.nummer=erstelltesObjekt.nummer*faktor;//Instanzvariable wird vor der Zuweisung multipliziert
 }
 public static void main(String[] args) {
 ThisReferenz ersteReferenz = new ThisReferenz(22);
 ThisReferenz zweiteReferenz = new ThisReferenz(ersteReferenz, 2);//zweites Objekt
 System.out.println(ersteReferenz.nummer);
 System.out.println(zweiteReferenz.nummer);//Ausgabe der Instanzvariablen
 }
}

Und das ganze am Beispiel eines linearen Umsatzplanes.

Es wäre doch schön, wenn Umsätze planbar wären.

Planbar sind diese….
Aber meistens geht der Plan nicht auf.

Dennoch müssen sämtliche Unternehmen Business- oder Budgetpläne anfertigen.

Und so einen Umsatzplan möchte ich auch anfertigen.
In diesem Zusammenhang möchte ich dir zeigen, wie du deinen Java Konstruktoren ein Objekt übergibst.

Die Ausgangslage unseres fiktiven Unternehmens ist relativ überschaubar.
Wir setzen eine Umsatzsteigerung von 5.000 Euro je Monat voraus.
Ach, wenn es doch so einfach wäre 🙂

Und so stelle ich mir das ganze vor.
Wir haben in einer Klasse zwei Konstruktoren.
Der erste Konstruktor verarbeitet zwei Instanzvariablen.
Den Umsatz und den entsprechenden Monat.

Der zweite Konstruktor verarbeitet ein bereits bestehendes Objekt.
Er nimmt also Objekt 1 und addiert 5000 Euro Umsatz hinzu.
Den Monatswert erhöht der Konstruktor um eins.

Machen wir, oder?

Also entwirf eine Klasse „AbsatzPlan“ mit zwei Instanzvariablen
Die Variable „monatAbsatz“ speichert den jeweiligen Monat als Zahl.
Die zweite Variable „planAbsatz“ speichert den Umsatz.

Der erste Konstruktor erwartet zwei Argumente (Monat und Absatz) und weist diese Werte den Instanzvariablen zu.

Der zweite Konstruktor erwartet ein Objekt.
Und dann erhöht der Konstruktor die Instanzvariablen entsprechend.

Die entsprechenden Werte der Instanzvariablen lasse ich mir über eine Instanzmethode ausgeben.
Und diese Methode rufe ich direkt in beiden Konstruktoren auf.

Und so sieht der Umsatzplan für Januar bis April aus.

public class AbsatzPlan {
int monatAbsatz; //Monat als Zahl
double planAbsatz; //Umsatz in Euro
 
public AbsatzPlan(int monatAbsatz, double planAbsatz){
 this.monatAbsatz=monatAbsatz; //Zuweisung des Monates
 this.planAbsatz=planAbsatz; //Zuweisung des Absatzes
 gibInfos(); //Aufruf der Methode
}
 
public AbsatzPlan (AbsatzPlan planObjekt){
 this.monatAbsatz=planObjekt.monatAbsatz+1; //Zuweisung des Monates und Erhöhung um eins
 this.planAbsatz=planObjekt.planAbsatz+5000; //Zuweisung des Absatzes und Erhöhung um 5000
 gibInfos(); //Aufruf der Methode
}
 
void gibInfos(){ //Methode gibt Infos zu den Instanzvariablen
 System.out.println("Für den Monat "+monatAbsatz+" plane ich "+planAbsatz+" Euro.");
}
 
public static void main(String[] args) {
 AbsatzPlan jan = new AbsatzPlan (1,1000); //Startmonat mit Aufruf des ersten Konsstruktors
 AbsatzPlan feb = new AbsatzPlan(jan); //dem zweiten Konstruktor wird das erste Objekt übergeben
 AbsatzPlan mrz = new AbsatzPlan(feb); //dem zweiten Konstruktor wird das zweite Objekt übergeben
 AbsatzPlan apr = new AbsatzPlan(mrz);
}
}



Zusammenfassung:

  • Neben primitiven Datentypen kannst du einem Konstruktor auch ein Objekt übergeben.
  • Implementiere einfach einen Konstruktor, welcher in seiner Parameterliste ein Objekt erwartet.
  • Innerhalb des Konstruktorrumpfes kannst du die Instanzvariablen zuweisen oder die Werte sogar verändern.

Hat dir dieser Beitrag gefallen?
Hast du Fragen oder weiterführende Hinweise zu den Java Konstruktoren
Na dann hinterlasse doch einen Kommentar unter diesem Beitrag.


Ähnliche Beiträge

3 Möglichkeiten um Vererbung von Java Klassen zu verhindern, zu verbieten oder ausschließen

Java Vererbung verhindern

Die ganze Java Vererbung für bestimmte Klassen ausschließen bzw. verhindern oder verbieten. Was soll das? Für bestimmte Java Klassen soll die Vererbung ausgeschlossen werden. Es soll also verhindert werden, dass Elternklassen – Kindklassen bekommen können. Klingt ein bisschen wie Verhütung, oder? Denn wie auch im echten Leben, können Kinder zu kleinen Tyrannen werden. Sie bedienen […]

So verwendest du die Java Codeblöcke zur Automatisierung

Java Codeblöcke

In diesem Beitrag geht es um den Einsatz von Java Codeblöcken oder Initialisierungsblöcken. Viele Wege führen nach Rom. Oder Alle Wege führen nach Rom. Heißt es in einem alten Sprichwort. Und so ähnlich ist es bei der Java Programmierung. In diesem Beitrag möchte ich dir einen weiteren Weg vorstellen, wie du Variablen eines Java Objektes […]

Java Übung 26 – Das erste kleine Java Spiel

Java Übung Zahlenraten

In dieser Java Übung geht es darum ein kleines Java-Spiel zu erstellen. Und zwar Zahlen raten. Was kannst du dir darunter vorstellen? Du gibst einen bestimmten Wertebereich an. Zum Beispiel 0 bis 100. Und das Java Programm erstellt eine Zufallszahl in diesem Bereich. Dann fordert dich das Programm auf, die Zahl zu raten. Du gibst […]

Polymorphie bringt Vorteile für Java Arrays

Java Polymorphie Arrays

Wenn Java Arrays, Schubladen oder Container sein sollen… Dann wäre der Gebrauch einer solchen Schublade ziemlich einseitig und festgefahren. Denn in jedes Array passen zwar mehrere Daten – aber immer nur vom gleichen Datentyp. Immer gleicher Datentyp? Also eine Schublade nur für Socken, Unterwäsche und der ganze andere Kram passt dann eben nicht hinein. Um […]

Java Übung 19 – Zähle die Kommastellen

Java Übung Kommastellen Zählen

In dieser Java Übung möchte ich, dass du eine Methode zum Zählen von Kommastellen schreibst. Lege dazu eine Klasse „KommaZahl“ an. Diese Klasse enthält die statische Methode „zaehleKommaStellen“, welche eine Kommazahl als übergebenen Parameter erwartet.

So kannst du in Java Und Verknüpfung anlegen und auswerten

Java Und

In Java stehen dir eine Menge Operatoren zur Verfügung. Einer dieser Operatoren ist der Und-Operator. Dies ist ein logischer Operator, da dieser sogenannte Wahrheitswerte mit einander verknüpft. Also…. Was erwartet dich in diesem Beitrag? Zuerst möchte ich dir die Aussagenlogik hinter dem Und-Operator zeigen. Also wann sind Aussagen wahr und wann sind diese falsch. Dann […]

Java Vererbung findet auch zwischen Einkaufstüten und Polizeiautos statt

Java Vererbung

„Manchmal findet Java Vererbung auch zwischen Einkaufstüten und Polizeiautos statt“ Irrer Titel, oder? Aber mal Hand aufs Herz. Was haben eigentlich eine Einkaufstüte und ein Polizeiwagen gemeinsam? Ich verrate dir etwas: Du kannst die Verbindung nicht erkennen, denn ich habe dir nicht alles verraten. Es fehlt noch ein wichtiger Aspekt – eine Verbindung zwischen beiden. […]

Über das kurze Leben einer lokalen Variablen

Java Variable lokal

Lass uns über die Lebensdauer einer lokalen Variablen sprechen. Warum ausgerechnet die Lebensdauer? Alle Java Variablen, unterscheiden sich in folgenden Punkten: wo diese deklariert werden können, wie du diese aufrufen kannst, welchen Bereich diese abdecken, und Ihre Lebensdauer Und eine lokale Java Variable hat eine relativ kurze Lebensdauer. Schauen wir uns zuerst Klassen- und Instanzvariablen […]

So kannst du ein Java Programm starten und Argumente übergeben

Um ein Java Programm starten zu können, benötigst du immer die main-Methode. Das Programm startet immer genau an dieser Stelle. Alle lokalen Variablen, welche du in der Main Methode anlegst, kannst du dann im Programm nutzen. Auch alle Methoden, welche du innerhalb des Methodenrumpfes der main-Methode aufrust, werden ausgeführt. Was ist aber vor der main-Methode. […]

So kannst du Java Arrays mit for Schleife füllen und auslesen

Java Arrays For Schleife

Wir haben in einem anderen Beitrag bereits über Java Arrays gesprochen. So ein Array speichert Zahlen, Texte oder Objekte in eine Art Liste. Und dann kannst du ganz bequem über den Index das Array füllen und die bereits enthaltenen Werte abrufen. Ganz bequem? So, wie ich dich aus dem letzten Beitrag entlassen habe, war das […]

Java Methoden mit variabler Argumentenanzahl – VarArgs

Java Methoden mit variabler Argumentenanzahl VarArgs

Du kennst das noch. Kopfrechnen und zwar auf Zeit. So etwas ist das Standardprogramm in den Schulklassen 1 bis 5. Irgendwann, in Klasse 6 oder 7, kommt der Taschenrechner ins Spiel und Kopfrechnen ist aus dem Schulalltag gestrichen. Schade eigentlich. Dabei kann man diese Disziplin auch wunderbar in kleinen Spielen unterbringen. Ich erinnere mich noch: […]