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

So kannst du Java Methoden überladen

Java Methoden überladen

Im Mittelalter war es üblich, dass Könige oder Adlige Briefe durch ein Siegel verschlossen. Das Siegel hatte die Aufgabe den Inhalt des Briefes vor dem gewaltsamen Öffnen zu schützen. Außerdem hatte das Siegel die Aufgabe einen Eigentumsnachweis sicher zu stellen. Und jeder, welcher das Siegel des Königs sah, wusste: „Das königliche Siegel – Oh ein […]

Eine Java Konsoleneingabe machst du über den Scanner

Es wird Zeit für die erste Java Konsoleneingabe. Und diese Eingaben machst du über den Java Scanner. Was ist das? Der Scanner ist eine vorgefertigte Java Klasse, welche Java mit seiner API anbietet. Das heißt du musst nichts selbst erschaffen. Du musst nur wissen, wie du darauf zugreifst. Erst einmal musst du einen Scanner anlegen. […]

So kannst du Java Arrays anlegen

Java Arrays anlegen

Java Arrays– Was ist das? Stell es dir einmal als ein Bücherregal vor. In einem Bücherregal befinden sich sämtliche Bücher. Und diese befinden sich schön nebeneinander. Jedes Buch hat seinen festen Platz. Du kannst die Bücher ganz genau lokalisieren. Zum Beispiel kannst du sagen. Das erste Buch von links Das dritte von rechts usw. Und […]

So erstellst du deine ersten Java Klassen mit Eclipse

Java Klassen sind Baupläne für Java Objekte. Und da Java eine objektorientierte Programmiersprache ist, sind Java Klassen somit ein elementarer Bestandteil. In diesem Beitrag möchte ich dir zeigen, wie du eine Java Klasse in Eclipse erstellen kannst. Ich möchte dir außerdem zeigen, was physikalisch in deinem Projekt passiert. Ganz zum Schluss zeige ich dir noch, […]

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

3 Möglichkeiten – Java Strings verketten und zusammenfügen

Java Strings verketten

Kennst du dieses Relikt längst vergangener Tage? Ein Brief. Ja früher einmal war es üblich, Briefe zu schreiben. Lange bevor es Smartphones oder Email gab. Man stelle sich einmal vor…. Die Leute mussten sich hinsetzen mit einem Blatt und einem Stift – und richtig schreiben. Nein nicht tippen – schreiben. 🙂 Grausame Welt, oder? Aber […]

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…

So kannst du Java installieren

Java installieren

Bevor du loslegst und deine ersten Java Programme schreibst, benötigst du die entsprechende Arbeitsumgebung. Du solltest also Java installieren. Und diese Arbeitsumgebung beinhaltet dann Bibliotheken für die einzelnen Java-Standard-Klassen, Dateien um deine Programme auszuführen. Dateien um deine Programme zu packen, Logische Verzeichnisstrukturen

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