logo

Konstruktorüberladung in Java

In Java können wir Konstruktoren wie Methoden überladen. Die Konstruktorüberladung kann als das Konzept definiert werden, mehr als einen Konstruktor mit unterschiedlichen Parametern zu haben, sodass jeder Konstruktor eine andere Aufgabe ausführen kann.

Folgendes berücksichtigen Java Programm, in dem wir verschiedene Konstruktoren in der Klasse verwendet haben.

Beispiel

 public class Student { //instance variables of the class int id; String name; Student(){ System.out.println('this a default constructor'); } Student(int i, String n){ id = i; name = n; } public static void main(String[] args) { //object creation Student s = new Student(); System.out.println('
Default Constructor values: 
'); System.out.println('Student Id : '+s.id + '
Student Name : '+s.name); System.out.println('
Parameterized Constructor values: 
'); Student student = new Student(10, 'David'); System.out.println('Student Id : '+student.id + '
Student Name : '+student.name); } } 

Ausgabe:

„Was ist der Unterschied zwischen einem Löwen und einem Tiger“
 this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David 

Im obigen Beispiel die Student-Klasse Konstrukteur ist mit zwei verschiedenen Konstruktoren überladen, nämlich Standard und parametrisiert.

NullpointerException

Hier müssen wir den Zweck der Konstruktorüberladung verstehen. Manchmal müssen wir mehrere Konstruktoren verwenden, um die verschiedenen Werte der Klasse zu initialisieren.

Wir müssen auch beachten, dass der Java-Compiler einen Standardkonstruktor aufruft, wenn wir keinen Konstruktor in der Klasse verwenden. Der Standardkonstruktor wird jedoch nicht aufgerufen, wenn wir einen beliebigen Konstruktor in der Klasse verwendet haben, unabhängig davon, ob es sich um einen Standardkonstruktor oder einen parametrisierten Konstruktor handelt. In diesem Fall löst der Java-Compiler eine Ausnahme aus, die besagt, dass der Konstruktor undefiniert ist.

Betrachten Sie das folgende Beispiel, das den Fehler enthält, da das Colleges-Objekt derzeit nicht mit dem Standardkonstruktor erstellt werden kann, da es keinen enthält.

Ostereier in Android
 public class Colleges { String collegeId; Colleges(String collegeId){ this.collegeId = 'IIT ' + collegeId; } public static void main(String[] args) { // TODO Auto-generated method stub Colleges clg = new Colleges(); //this can't create colleges constructor now. } } 

Verwendung von this () beim Konstruktorüberladen

Wir können dieses Schlüsselwort jedoch innerhalb des Konstruktors verwenden, um den anderen Konstruktor derselben Klasse aufzurufen.

Betrachten Sie das folgende Beispiel, um die Verwendung dieses Schlüsselworts bei der Konstruktorüberladung zu verstehen.

 public class Student { //instance variables of the class int id,passoutYear; String name,contactNo,collegeName; Student(String contactNo, String collegeName, int passoutYear){ this.contactNo = contactNo; this.collegeName = collegeName; this.passoutYear = passoutYear; } Student(int id, String name){ this('9899234455', 'IIT Kanpur', 2018); this.id = id; this.name = name; } public static void main(String[] args) { //object creation Student s = new Student(101, 'John'); System.out.println('Printing Student Information: 
'); System.out.println('Name: '+s.name+'
Id: '+s.id+'
Contact No.: '+s.contactNo+'
College Name: '+s.contactNo+'
Passing Year: '+s.passoutYear); } } 

Ausgabe:

 Printing Student Information: Name: John Id: 101 Contact No.: 9899234455 College Name: 9899234455 Passing Year: 2018