Em Java, podemos sobrecarregar construtores como métodos. A sobrecarga de construtor pode ser definida como o conceito de ter mais de um construtor com parâmetros diferentes para que cada construtor possa realizar uma tarefa diferente.
Considere o seguinte Java programa, no qual usamos diferentes construtores na classe.
converter string em objeto json
Exemplo
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); } }
Saída:
this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David
No exemplo acima, a classe Aluno construtor está sobrecarregado com dois construtores diferentes, ou seja, padrão e parametrizado.
Aqui, precisamos entender o propósito da sobrecarga do construtor. Às vezes, precisamos usar vários construtores para inicializar os diferentes valores da classe.
Devemos também observar que o compilador java invoca um construtor padrão quando não usamos nenhum construtor na classe. Porém, o construtor padrão não é invocado se tivermos utilizado algum construtor na classe, seja ele padrão ou parametrizado. Nesse caso, o compilador java lança uma exceção dizendo que o construtor está indefinido.
hash na estrutura de dados
Considere o exemplo a seguir, que contém o erro, pois o objeto Colleges não pode ser criado usando o construtor padrão agora, pois não contém um.
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. } }
Uso deste () na sobrecarga do construtor
Porém, podemos usar esta palavra-chave dentro do construtor, que pode ser usada para invocar o outro construtor da mesma classe.
Considere o exemplo a seguir para entender o uso desta palavra-chave na sobrecarga do construtor.
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); } }
Saída:
Printing Student Information: Name: John Id: 101 Contact No.: 9899234455 College Name: 9899234455 Passing Year: 2018