Konstruktorverkettung in Java mit Beispielen und Implementierung

Veröffentlicht: 2023-06-05

In Java können Konstruktoren als Codeblöcke verstanden werden, die zur Initialisierung neu erstellter Objekte verwendet werden. Ein Konstruktor ähnelt Instanzmethoden in Java. Es gibt jedoch einen entscheidenden Unterschied zwischen Konstruktoren und Methoden in Java: Während Methoden einen Rückgabetyp haben, haben Konstruktoren keinen bestimmten Rückgabetyp. Programmierer bezeichnen Konstruktoren oft als einen speziellen Methodentyp in Java.

Konstruktoren in Java haben denselben Namen wie die Klasse und sehen wie folgt aus:

öffentliche Klasse myProgram{

//Dies ist der Konstruktor

meinProgramm(){

}

..

}

Wenn ein Konstruktor aus einem anderen Konstruktor heraus aufgerufen wird, kommt es in Java zur Konstruktorverkettung. Bevor wir jedoch tiefer in die Konstruktorverkettung eintauchen, werfen wir zunächst einen kurzen Blick auf die Funktionsweise von Konstruktoren in Java und geben einige Beispiele, um Ihr Verständnis zu festigen.

Inhaltsverzeichnis

Wie funktionieren Konstruktoren in Java?

Um zu verstehen, wie Konstruktoren funktionieren, schauen wir uns ein Beispiel an. Angenommen, wir haben eine Klasse namens myProgram. Wenn wir nun das Objekt dieser Klasse erstellen, müssen wir die folgende Anweisung schreiben:

myProgram obj = new myProgram()

Wie Sie sehen können, erstellt das im obigen Beispiel verwendete Schlüsselwort new das Objekt von myProgram und ruft einen Konstruktor auf, um dieses neu erstellte Objekt zu initialisieren.

Wenn Ihnen das etwas verwirrend vorkommt, machen Sie sich keine Sorgen. Schauen wir uns ein einfaches Konstruktorprogramm in Java an, um die Funktionsweise von Konstruktoren in Java besser zu verstehen.

Grundlegendes Konstruktorprogramm in Java

Schauen Sie sich den folgenden Java-Code an, der Konstruktoren verwendet:

öffentlicher Klassentest{

Saitenbuch;

//Konstrukteur

Prüfen(){

this.book = „Ein Fänger im Roggen“;

}

public static void main(String[] args) {

Test obj = new Test();

System.out.println(obj.book);

}

}

Ausgang:

Ein Fänger im Roggen

Im obigen Programm haben wir ein Objekt namens „obj“ unserer Klasse „Programm“ erstellt. Dann haben wir den Instanzvariablennamen dieses neu erstellten Objekts gedruckt. Wie Sie der Ausgabe entnehmen können, ist die Ausgabe dieselbe wie der Wert, der während der Initialisierung des Konstruktors an „book“ übergeben wurde.

Dies zeigt, dass der Konstruktor automatisch aufgerufen wurde, sobald das obj-Objekt erstellt wurde. Hier haben wir das Schlüsselwort „this“ verwendet, um auf das aktuelle Objekt zu verweisen. Es gibt noch weitere Möglichkeiten, dies zu tun, auf die wir später in diesem Artikel bei der Diskussion der Konstruktorverkettung eingehen werden.

Nachdem wir die Grundlagen des Konstruktors in Java geklärt haben, fahren wir mit der Konstruktorverkettung in Java und ihrer Funktionsweise fort!

Verkettung von Konstruktoren innerhalb einer einzelnen Klasse

Aberwas bedeutet Konstruktorverkettung in Java, wenn eine einzelne Klasse beteiligt ist?Der Aufruf eines Konstruktors von einem anderen in derselben Klasse umfasst die Konstruktorverkettung innerhalb dieser Klasse. Das Schlüsselwort „this“ wird in der Syntax für die Konstruktorverkettung innerhalb derselben Klasse verwendet. Bei Verwendung von „this“ wird auf die aktuelle Klasseninstanz verwiesen. Am besten lässt sich die Verwendung derKonstruktorverkettung in Java anhand eines Beispiels verstehen .

Verkettung von Konstruktoren aus Basis-/Elternklassen

Eine Klasse in Java kann von einer anderen Klasse abgeleitet sein; Die abgeleitete Klasse wird als Unterklasse bezeichnet, und die Klasse, von der sie abgeleitet ist, wird als Oberklasse bezeichnet. Eine Unterklasse kann ihre eigenen Konstruktoren haben und die ihrer Oberklasse aufrufen.

Ein Superklassenkonstruktor verwendet den Begriff super(), gefolgt von den erforderlichen Eingaben. Das Schlüsselwort super() muss immer in der ersten Zeile des Unterklassenkonstruktors vorhanden sein.

Aufruf von einem anderen Konstruktor, einem Builder

Mit dem Schlüsselwort this() kann ein Konstruktor in Java einen anderen Konstruktor derselben Klasse aufrufen. Das erste Schlüsselwort im Konstruktor muss immer das Schlüsselwort this() sein, das nur zum Aufrufen eines anderen Konstruktors desselben Typs verwendet werden kann.

Konstrukteur der Telefon-Superklasse

Das Schlüsselwort super() in Java ermöglicht es Unterklassenkonstruktoren, den Konstruktor der Oberklasse aufzurufen. Das Schlüsselwort super(), das nur zum Aufrufen des Konstruktors der Oberklasse der Unterklasse verwendet werden kann, muss immer in der ersten Zeile des Unterklassenkonstruktors stehen.

Java-Programme verhalten sich möglicherweise anders, wenn die Konstruktoren in einer anderen Reihenfolge angeordnet sind. Wenn eine Klasse viele Konstruktoren hat und einer von ihnen das Schlüsselwort this() verwendet, um einen anderen Konstruktor aufzurufen, kann eine Änderung der Reihenfolge der Konstruktoren das Verhalten eines Programms ändern.

Eine andere Möglichkeit, Konstruktoren mithilfe des Init-Blocks zu verketten

Die Verwendung eines Initialisierungsblocks ist ein weiterer Ansatz zur Konstruktorverkettung in Java .Ein Codeabschnitt, der als Initialisierungsblock bezeichnet wird, wird ausgeführt

Grundlagen der Konstruktorverkettung in Java

Wenn wir einen Konstruktor von einem anderen Konstruktor derselben Klasse aufrufen, wird dies als Konstruktorverkettung bezeichnet. Der Hauptzweck der Konstruktorverkettung besteht darin, Parameter durch eine Reihe verschiedener Konstruktoren zu leiten und sie nur an einer Stelle zu initialisieren. Auf diese Weise haben Sie die Möglichkeit, alle Ihre Initialisierungen an einem einzigen Ort zu verwalten, während den Benutzern verschiedene Konstruktoren bereitgestellt werden können.

Wenn Sie keine Konstruktorverkettung durchführen und zwei verschiedene Konstruktoren einen Parameter erfordern, müssen Sie diesen Parameter zweimal initialisieren. Außerdem müssen Sie jedes Mal, wenn sich die Initialisierung ändert, entsprechende Änderungen an allen Konstruktoren vornehmen und nicht nur an einem.

Als Faustregel gilt, dass Sie Konstruktoren mit mehr Argumenten immer von Konstruktoren mit weniger Argumenten aufrufen sollten. Sie müssen sich auch darüber im Klaren sein, dass wir mehrere Konstruktoren in der Klasse überlasten können. Allerdings wird zum Zeitpunkt der Erstellung eines Objekts nur ein bestimmter Konstruktor aufgerufen. Beim Programmieren in Java kann es durchaus vorkommen, dass Sie mehrere Konstruktoren voneinander aufrufen müssen, ohne unterschiedliche Objekte zu erstellen. Dieser Mechanismus, bei dem ein Konstruktor von einem anderen Konstruktor aufgerufen wird und wenn dieser beteiligte Konstruktor einen anderen Konstruktor aufruft, wird als Konstruktorverkettung bezeichnet.

Lernen SieSoftwarekurseonline von den besten Universitäten der Welt.Erwerben Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Um größtmögliche Klarheit zu gewährleisten, sollten Sie bei der Konstruktorverkettung vor allem zwei Dinge beachten:

  • Der Hauptzweck der Konstruktorverkettung besteht darin, den Code zu verwalten. Die Idee besteht darin, Ihnen dabei zu helfen, nur einen Code zu schreiben, der in Ihrem Programm wiederverwendet werden kann. Auf diese Weise ist Ihr Code nicht nur sauber und lesbar, sondern auch viel einfacher zu verwalten, da alle Korrekturen und Änderungen nur an einer Stelle und nicht bei allen Konstruktoren vorgenommen werden.
  • Der aufgerufene Konstruktor erstellt kein separates Objekt. Stattdessen wird das aktuell ausgeführte Objekt verwendet, um einen anderen Konstruktor aufzurufen. Es ist so, als würde man eine andere Methode in Ihrem Konstruktor aufrufen, mit dem Unterschied, dass es sich ebenfalls um einen Konstruktor handelt.

Wie Sie im vorherigen Beispiel gesehen haben, haben wir dieses Schlüsselwort verwendet, um auf die Parameter des Konstruktors zuzugreifen. Ebenso erfordert die Konstruktorverkettung hauptsächlich zwei Schlüsselwörter. Hier sind diese beiden Schlüsselwörter:

  • this – Seine Methodendarstellung ruft einen aktuellen Klassenkonstruktor auf.
  • super – Seine Methodendarstellung ruft einen unmittelbaren Super- oder übergeordneten Superklassenkonstruktor auf.

Darüber hinaus sollten Sie einige weitere wichtige Begriffe und Definitionen im Zusammenhang mit der Konstruktorverkettung in Java kennen:

  • Konstruktoraufruf: Wenn Sie einen Konstruktor aufrufen und dieser Konstruktor erfolgreich aufgerufen wird, wird dies als Konstruktoraufruf bezeichnet.
  • Konstruktorausführung: Wenn der Konstruktor aufgerufen wird, beginnt die Steuerung mit der Ausführung der Anweisungen im Konstruktorkörper. Dies wird als Konstruktorausführung bezeichnet.

Schlüsselregeln der Konstruktorverkettung in Java

Nachdem wir die Grundlagen der Konstruktorverkettung geklärt haben, schauen wir uns einige wesentliche Regeln für die Arbeit mit der Konstruktorverkettung in Java an:

  • this() kann nur die Parameter aufrufen, die zum selben Konstruktor gehören.
  • super() kann nur den Konstruktor der unmittelbaren Oberklasse aufrufen.
  • this() und super() sollten die erste Anweisung im Konstruktor sein.
  • This () und super() können nicht innerhalb desselben Konstruktors verwendet werden, da beide Personen erste Anweisungen sein müssen, was praktisch nicht möglich ist.
  • Sie können this() nicht in allen Konstruktoren derselben Klasse hinzufügen, da es mindestens einen Konstruktor ohne this()-Anweisung geben sollte.
  • Das Aufrufen und Ausführen von Konstruktoren in Java erfolgt gegensätzlich. Wenn also die Konstruktoren in der Reihenfolge A, B, C aufgerufen wurden, erfolgt die Ausführung in der Reihenfolge C, B, A.

Hier haben wir beispielsweise zwei separate Klassen, die durch Überladen verschiedener Konstruktoren arbeiten. Wir wollen die Konstruktoren in der Reihenfolge 2, 1, 4, 3, 5 ausführen.

Um Konstruktoren der Reihe nach auszuführen, müssen wir die Konstruktoren genau in der entgegengesetzten Reihenfolge aufrufen, z. B. 5, 3, 4, 1, 2, siehe im folgenden Beispiel.

Klasse Eltern

{

Parent()// 1

{

this(„Hallo“);

System.out.println(“im übergeordneten 0-Arg-Konstruktor 1”);

}

Parent(String msg)// 2

{

System.out.println(“in Parent(String) Konstruktor 2“);

}

}

Der Klassenkonstruktor erweitert Parent

{

Konstruktor()// 3

{

this(10);// Aufruf des 5-Nummern-Konstruktors

System.out.println(“in Konstruktor 0 arg Konstruktor 3“);

}

Konstruktor(String msg)// 4

{

super();//ruft den 1-Nummer-Konstruktor der übergeordneten Klasse auf

System.out.println(“in Constructor(String msg) arg constructionor 4“);

}

Konstruktor(int i)// 5

{

this(“hello”);//Aufruf des 4-Nummern-Konstruktors

System.out.println(“in Constructor(int i) Konstruktor 5“);

}

// main()-Methode

public static void main(String[] args)

{

Konstruktor cobj = new Constructor(); // Aufruf des 3-Nummern-Konstruktors

}

}

Ausgang:

im Parent(String)-Konstruktor 2

im übergeordneten 0-Arg-Konstruktor 1

im Konstruktor(String msg) arg Konstruktor 4

im Konstruktor(int i) Konstruktor 5

im Konstruktor 0 arg Konstruktor 3

Fasst alle Konzepte von Konstruktoren und Konstruktorverkettung in Java mit einem letzten Beispiel zusammen:

Klasse Emp

{

öffentlicher String EName;

öffentliche int Eearnings;

öffentliche String-Adresse;

öffentliches Emp()

{

this(„Rahul“);

}

public Emp(String name)

{

this(name, 140035);

}

public Emp(String name, int sal)

{

this(name, sal, „Neu-Delhi“);

}

public Employee(String name, int sal, String add)

{

this.EName=name;

this.EEarnings=sal;

this.address=add;

}

void disp() {

System.out.println(“Name: „+EName);

System.out.println(“Gehalt: „+EEarnings);

System.out.println(“Adresse: „+Adresse);

}

public static void main(String[] args)

{

Employee obj = new Employee();

obj.disp();

}

}

Ausgang:

Name des Mitarbeiters: Rahul

Mitarbeitergehalt: 140035

Mitarbeiteradresse: Neu-Delhi

Abschluss

Damit sind wir am Ende dieses Artikels angelangt. Wir hoffen, dass dies Ihre Zweifel an der Konstruktorverkettung in Java ausgeräumt und Ihr Verständnis weiter gefestigt hat. Bei upGrad glauben wir daran, Studenten aus der ganzen Welt dabei zu helfen, ihr volles Potenzial auszuschöpfen und in ihrer Karriere erfolgreich zu sein. Unsere Kurse sind sowohl für Erstsemester als auch für erfahrene Profis konzipiert.

Ein solcher Kurs ist die Job-linked PG Certification in Software Engineering von upGrad , die speziell für Berufseinsteiger konzipiert wurde. Schauen Sie sich die Kursinhalte an und melden Sie sich noch heute an! Erlernen Sie alle relevanten Software-Engineering-Kenntnisse wie Java, DSA, OODAP, JavaScript, MERN, AWS usw. von Branchenexperten und führenden Fachleuten.

F: Ist es möglich, in Java mehr als zwei Konstruktoren zu verketten?

Java erlaubt maximal zwei Konstruktorketten. Auf diese Weise können Sie komplexere Objekte erstellen und die Codeduplizierung reduzieren.

F: Was passiert, wenn sich ein Konstruktor in Java selbst aufruft?

Ein Konstruktor in Java, der sich selbst aufruft, führt zu einem Stapelüberlauffehler und einer Endlosschleife.

F: Wie sieht der Standardkonstruktor in Java aus?

Ein Standardkonstruktor in Java akzeptiert keine Eingaben. Wenn in der Klasse kein Konstruktor deklariert ist, wird automatisch einer erstellt.