logo

Konstruktør overbelastning i Java

I Java kan vi overbelaste konstruktører som metoder. Konstruktøroverbelastningen kan defineres som konceptet med at have mere end én konstruktør med forskellige parametre, så hver konstruktør kan udføre en anden opgave.

Overvej følgende Java program, hvor vi har brugt forskellige 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); } } 

Produktion:

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

I ovenstående eksempel, Elev-klassen konstruktør er overbelastet med to forskellige konstruktører, dvs. standard og parametriseret.

Her skal vi forstå formålet med konstruktøroverbelastning. Nogle gange skal vi bruge flere konstruktører til at initialisere de forskellige værdier af klassen.

Vi skal også bemærke, at java-compilatoren kalder en standardkonstruktør, når vi ikke bruger nogen konstruktør i klassen. Standardkonstruktøren aktiveres dog ikke, hvis vi har brugt en hvilken som helst konstruktør i klassen, uanset om den er standard eller parametriseret. I dette tilfælde kaster java-kompileren en undtagelse, der siger, at konstruktøren er udefineret.

java multithreading

Overvej følgende eksempel, som indeholder fejlen, da Colleges-objektet ikke kan oprettes ved hjælp af standardkonstruktøren nu, da det ikke indeholder 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. } } 

Brug af denne () til konstruktøroverbelastning

Vi kan dog bruge dette nøgleord inde i konstruktøren, som kan bruges til at kalde den anden konstruktør af samme klasse.

Overvej følgende eksempel for at forstå brugen af ​​dette nøgleord 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); } } 

Produktion:

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