În Java, putem supraîncărca constructori precum metode. Supraîncărcarea constructorului poate fi definită ca conceptul de a avea mai mult de un constructor cu parametri diferiți, astfel încât fiecare constructor să poată îndeplini o sarcină diferită.
Luați în considerare următoarele Java program, în care am folosit diferiți constructori în clasă.
Exemplu
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); } }
Ieșire:
this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David
În exemplul de mai sus, clasa Student constructor este supraîncărcat cu doi constructori diferiți, adică implicit și parametrizați.
Aici, trebuie să înțelegem scopul supraîncărcării constructorului. Uneori, trebuie să folosim mai mulți constructori pentru a inițializa diferitele valori ale clasei.
De asemenea, trebuie să observăm că compilatorul java invocă un constructor implicit atunci când nu folosim niciun constructor în clasă. Cu toate acestea, constructorul implicit nu este invocat dacă am folosit orice constructor din clasă, indiferent dacă este implicit sau parametrizat. În acest caz, compilatorul java lansează o excepție care spune că constructorul este nedefinit.
Luați în considerare următorul exemplu, care conține eroarea, deoarece obiectul Colleges nu poate fi creat folosind constructorul implicit acum, deoarece nu conține unul.
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. } }
Utilizarea acestui () în supraîncărcarea constructorului
Cu toate acestea, putem folosi acest cuvânt cheie în interiorul constructorului, care poate fi folosit pentru a invoca celălalt constructor din aceeași clasă.
Luați în considerare următorul exemplu pentru a înțelege utilizarea acestui cuvânt cheie în supraîncărcarea constructorului.
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); } }
Ieșire:
Printing Student Information: Name: John Id: 101 Contact No.: 9899234455 College Name: 9899234455 Passing Year: 2018