logo

Sobrecarga de construtor em Java

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