Konstruktorüberladung in Java: Was ist & Programmbeispiele

Inhaltsverzeichnis:

Anonim

Was ist der Konstruktor in Java?

CONSTRUCTOR ist eine spezielle Methode, die zum Initialisieren eines neu erstellten Objekts verwendet wird und unmittelbar nach der Zuweisung des Speichers für das Objekt aufgerufen wird. Es kann verwendet werden, um die Objekte zum Zeitpunkt der Objekterstellung auf die gewünschten Werte oder Standardwerte zu initialisieren. Der Codierer muss nicht unbedingt einen Konstruktor für eine Klasse schreiben.

Wenn für eine Klasse kein benutzerdefinierter Konstruktor bereitgestellt wird, initialisiert der Compiler die Mitgliedsvariablen auf ihre Standardwerte.

  • numerische Datentypen werden auf 0 gesetzt
  • char-Datentypen werden auf Nullzeichen gesetzt ('\ 0')
  • Referenzvariablen werden auf null gesetzt

In diesem Tutorial lernen Sie:

  • Regeln zum Erstellen eines Konstruktors
  • Konstruktorüberladung in Java
  • Konstruktorkette

Regeln zum Erstellen eines Java-Konstruktors

  1. Es hat den gleichen Namen wie die Klasse
  2. Es sollte keinen Wert zurückgeben, der nicht einmal ungültig ist

Beispiel 1 : Erstellen Sie Ihren ersten Konstruktor in Java

Schritt 1) Geben Sie das folgende Konstruktorprogramm in den Java-Editor ein.

class Demo{int value1;int value2;Demo(){value1 = 10;value2 = 20;System.out.println("Inside Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();d1.display();}}

Schritt 2) Speichern, ausführen und kompilieren Sie das Konstruktorprogramm in Java und beobachten Sie die Ausgabe.

Ausgabe:

Inside ConstructorValue1 === 10Value2 === 20

Konstruktorüberladung in Java

Das Überladen von Java-Konstruktoren ist eine Technik, bei der eine Klasse eine beliebige Anzahl von Konstruktoren haben kann, die sich in der Parameterliste unterscheiden. Der Compiler unterscheidet diese Konstruktoren anhand der Anzahl der Parameter in der Liste und ihres Typs.

Beispiele für gültige Konstruktoren für die Klasse Account sind

Account(int a);Account (int a,int b);Account (String a,int b);

Beispiel 2 : Um das Überladen von Konstruktoren in Java zu verstehen

Schritt 1) Geben Sie den Code in den Editor ein.

class Demo{int value1;int value2;/*Demo(){value1 = 10;value2 = 20;System.out.println("Inside 1st Constructor");}*/Demo(int a){value1 = a;System.out.println("Inside 2nd Constructor");}Demo(int a,int b){value1 = a;value2 = b;System.out.println("Inside 3rd Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();Demo d2 = new Demo(30);Demo d3 = new Demo(30,40);d1.display();d2.display();d3.display();}}

Schritt 2) Speichern, kompilieren und führen Sie den Code aus.

Schritt 3) Fehler = ?. Versuchen Sie, den Fehler zu debuggen, bevor Sie mit dem nächsten Schritt der Überladung des Java-Konstruktors fortfahren

Schritt 4) Jede Klasse hat einen Standardkonstruktor in Java. Der standardmäßig überladene Konstruktor Java für die Klasse Demo ist Demo () . Falls Sie diesen Konstruktor nicht bereitstellen, erstellt der Compiler ihn für Sie und initialisiert die Variablen mit Standardwerten. Sie können diesen Standardkonstruktor überschreiben und Variablen auf die gewünschten Werte initialisieren, wie in Beispiel 1 gezeigt.

Wenn Sie jedoch einen parametrisierten Konstruktor wie Demo (int a) angeben und den Standardkonstruktor Java Demo () verwenden möchten, müssen Sie ihn angeben.

Mit anderen Worten, falls Ihr überladender Konstruktor in Java überschrieben wird und Sie den Standardkonstruktor Java verwenden möchten, muss dieser angegeben werden.

Schritt 5) Kommentar Nr. 4-8 auskommentieren. Speichern, kompilieren und führen Sie den Code aus.

Konstruktorkette

Stellen Sie sich ein Szenario vor, in dem eine Basisklasse von einem untergeordneten Element erweitert wird. Immer wenn ein Objekt der untergeordneten Klasse erstellt wird, wird zuerst der Konstruktor der übergeordneten Klasse aufgerufen. Dies wird als Konstruktorkettung bezeichnet.

Beispiel 3: Um die Verkettung von Konstruktoren zu verstehen

Schritt 1) Kopieren Sie den folgenden Code in den Editor.

class Demo{int value1;int value2;Demo(){value1 = 1;value2 = 2;System.out.println("Inside 1st Parent Constructor");}Demo(int a){value1 = a;System.out.println("Inside 2nd Parent Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){DemoChild d1 = new DemoChild();d1.display();}}class DemoChild extends Demo{int value3;int value4;DemoChild(){//super(5);value3 = 3;value4 = 4;System.out.println("Inside the Constructor of Child");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);System.out.println("Value1 === "+value3);System.out.println("Value2 === "+value4);}}

Schritt 2) Führen Sie den Code aus. Aufgrund der Verkettung von Konstruktoren wird beim Erstellen des Objekts der untergeordneten Klasse DemoChild zuerst der Konstruktor Demo () der übergeordneten Klasse aufgerufen und später der Konstruktor DemoChild () des untergeordneten Elements erstellt. Erwartete Ausgabe =

Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4

Schritt 3) Sie können beobachten, dass der Konstruktor der übergeordneten Klasse Demo überschrieben wird. Was ist, wenn Sie beim Erstellen Ihres untergeordneten Objekts die überschriebene Konstruktor-Demo (int a) anstelle der Standardkonstruktor-Demo () aufrufen möchten?

In solchen Fällen können Sie das Schlüsselwort "super" verwenden , um überschriebene Konstruktoren der übergeordneten Klasse aufzurufen.

Syntax:-

super();--or--super(parameter list);

Beispiel: Wenn Ihr Konstruktor wie Demo (String Name, int a) ist, geben Sie super an ("Java", 5). Bei Verwendung muss das Schlüsselwort super die erste Codezeile im Konstruktor der untergeordneten Klasse sein.

Schritt 4) Kommentieren Sie Zeile 26 aus und führen Sie den Code aus. Beobachten Sie die Ausgabe.

Ausgabe:

Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4