logo

Konstruktør overbelastning i Java

I Java kan vi overbelaste konstruktører som metoder. Konstruktøroverbelastningen kan defineres som konseptet med å ha mer enn én konstruktør med forskjellige parametere slik at hver konstruktør kan utføre en annen oppgave.

Vurder følgende Java program, der vi har brukt forskjellige konstruktører i klassen.

Eksempel

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

Produksjon:

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

I eksemplet ovenfor, Student-klassen konstruktør er overbelastet med to forskjellige konstruktører, dvs. standard og parameterisert.

Her må vi forstå formålet med konstruktøroverbelastning. Noen ganger må vi bruke flere konstruktører for å initialisere de forskjellige verdiene til klassen.

Vi må også legge merke til at java-kompilatoren påkaller en standardkonstruktør når vi ikke bruker noen konstruktør i klassen. Standardkonstruktøren blir imidlertid ikke påkalt hvis vi har brukt noen konstruktør i klassen, enten den er standard eller parameterisert. I dette tilfellet kaster java-kompilatoren et unntak som sier at konstruktøren er udefinert.

telle distinkt

Tenk på følgende eksempel, som inneholder feilen siden Colleges-objektet ikke kan opprettes ved å bruke standardkonstruktøren nå, siden det ikke inneholder en.

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

Bruk av denne () i konstruktøroverbelastning

Vi kan imidlertid bruke dette nøkkelordet inne i konstruktøren, som kan brukes til å starte den andre konstruktøren i samme klasse.

Tenk på følgende eksempel for å forstå bruken av dette nøkkelordet i konstruktøroverbelastning.

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

Produksjon:

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