En Java, on peut surcharger les constructeurs comme les méthodes. La surcharge du constructeur peut être définie comme le concept consistant à avoir plusieurs constructeurs avec des paramètres différents afin que chaque constructeur puisse effectuer une tâche différente.
Considérer ce qui suit Java programme, dans lequel nous avons utilisé différents constructeurs de la classe.
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); } }
Sortir:
this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David
Dans l'exemple ci-dessus, la classe Student constructeur est surchargé avec deux constructeurs différents, c'est-à-dire par défaut et paramétré.
Ici, nous devons comprendre le but de la surcharge des constructeurs. Parfois, nous devons utiliser plusieurs constructeurs pour initialiser les différentes valeurs de la classe.
Il faut également remarquer que le compilateur Java invoque un constructeur par défaut lorsque l'on n'utilise aucun constructeur dans la classe. Cependant, le constructeur par défaut n'est pas invoqué si nous avons utilisé un constructeur dans la classe, qu'il soit par défaut ou paramétré. Dans ce cas, le compilateur Java lève une exception indiquant que le constructeur n'est pas défini.
Considérez l'exemple suivant, qui contient l'erreur puisque l'objet Colleges ne peut pas être créé à l'aide du constructeur par défaut car il n'en contient pas.
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. } }
Utilisation de this () dans la surcharge du constructeur
Cependant, nous pouvons utiliser ce mot-clé à l’intérieur du constructeur, qui peut être utilisé pour invoquer l’autre constructeur de la même classe.
Considérez l'exemple suivant pour comprendre l'utilisation de ce mot-clé dans la surcharge du constructeur.
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); } }
Sortir:
Printing Student Information: Name: John Id: 101 Contact No.: 9899234455 College Name: 9899234455 Passing Year: 2018