logo

Sobrecàrrega del constructor a Java

A Java, podem sobrecarregar constructors com mètodes. La sobrecàrrega del constructor es pot definir com el concepte de tenir més d'un constructor amb diferents paràmetres perquè cada constructor pugui realitzar una tasca diferent.

Considereu el següent Java programa, en el qual hem utilitzat diferents constructors a la classe.

jbutton

Exemple

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

Sortida:

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

A l'exemple anterior, la classe d'alumnes constructor està sobrecarregat amb dos constructors diferents, és a dir, per defecte i parametritzats.

Aquí, hem d'entendre el propòsit de la sobrecàrrega del constructor. De vegades, hem d'utilitzar diversos constructors per inicialitzar els diferents valors de la classe.

També hem de notar que el compilador java invoca un constructor per defecte quan no fem servir cap constructor a la classe. Tanmateix, el constructor per defecte no s'invoca si hem utilitzat algun constructor de la classe, ja sigui per defecte o parametritzat. En aquest cas, el compilador java llança una excepció dient que el constructor no està definit.

clau d'inserció del portàtil

Considereu l'exemple següent, que conté l'error ja que l'objecte Colleges no es pot crear amb el constructor predeterminat ara ja que no en conté cap.

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

Ús d'aquest () en la sobrecàrrega del constructor

Tanmateix, podem utilitzar aquesta paraula clau dins del constructor, que es pot utilitzar per invocar l'altre constructor de la mateixa classe.

Considereu l'exemple següent per entendre l'ús d'aquesta paraula clau en la sobrecàrrega del 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); } } 

Sortida:

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