logo

Overbelasting van de constructor in Java

In Java kunnen we constructors zoals methoden overbelasten. Overbelasting van de constructor kan worden gedefinieerd als het concept van het hebben van meer dan één constructor met verschillende parameters, zodat elke constructor een andere taak kan uitvoeren.

Stel je de volgende situatie voor Java programma, waarin we verschillende constructors in de klas hebben gebruikt.

Voorbeeld

 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); } } 

Uitgang:

 this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David 

In het bovenstaande voorbeeld is dit de klasse Student bouwer is overbelast met twee verschillende constructors, d.w.z. standaard en geparametriseerd.

Hier moeten we het doel van overbelasting van de constructor begrijpen. Soms moeten we meerdere constructors gebruiken om de verschillende waarden van de klasse te initialiseren.

We moeten ook opmerken dat de Java-compiler een standaardconstructor aanroept als we geen enkele constructor in de klasse gebruiken. De standaardconstructor wordt echter niet aangeroepen als we een constructor in de klasse hebben gebruikt, ongeacht of deze standaard of geparametriseerd is. In dit geval genereert de Java-compiler een uitzondering die zegt dat de constructor niet gedefinieerd is.

Bekijk het volgende voorbeeld, dat de fout bevat omdat het Colleges-object nu niet kan worden gemaakt met de standaardconstructor, omdat deze er geen bevat.

 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. } } 

Gebruik van deze () bij overbelasting van de constructor

We kunnen dit sleutelwoord echter binnen de constructor gebruiken, wat kan worden gebruikt om de andere constructor van dezelfde klasse aan te roepen.

Bekijk het volgende voorbeeld om inzicht te krijgen in het gebruik van dit trefwoord bij overbelasting van de constructor.

 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); } } 

Uitgang:

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