Sobrecarga do construtor em Java
⚡ Resumo Inteligente
Sobrecarga do construtor em Java Permite que uma classe declare múltiplos construtores que diferem pela lista de parâmetros, proporcionando aos desenvolvedores inicialização flexível de objetos, reutilização de código mais limpa através de `this()` e comportamento previsível sempre que valores padrão ou personalizados forem necessários na instanciação.
O que é sobrecarga de construtores em Java?
Sobrecarga do construtor em Java é uma técnica na qual uma classe declara múltiplos construtores que diferem na lista de parâmetros. O compilador diferencia esses construtores analisando o número de parâmetros e seus tipos de dados.
Exemplos de construtores válidos para classe de Corretora são mostrados abaixo:
Account(int a); Account (int a,int b); Account (String a,int b);
Por que precisamos de sobrecarga de construtores em Java?
Sobrecarga do construtor em Java Aumenta a flexibilidade e a eficiência do código, permitindo vários construtores em uma classe, cada um com uma lista de parâmetros diferente.
- Flexibilidade na criação de objetos: A sobrecarga de construtores permite inicializar objetos de várias maneiras, dependendo do número ou tipo de parâmetros.
- Code Reutilização: Você pode reutilizar a lógica do construtor invocando um construtor a partir de outro usando o esta() palavra chave.
- Legibilidade aprimorada: Construtores sobrecarregados tornam o código mais intuitivo, oferecendo opções específicas para diferentes necessidades de inicialização.
- Inicialização padrão e personalizada: A sobrecarga de construtores permite criar objetos com inicialização padrão e personalizada de forma fácil.
Exemplo: Sobrecarga de construtores em Java
O exemplo a seguir demonstra a sobrecarga de construtores em Java usando uma classe chamada Demo.
Passo 1) Digite o código no editor.
class Demo{ int value1; int value2; /*Demo(){ value1 = 10; value2 = 20; System.out.println("Inside 1st Constructor"); }*/ Demo(int a){ value1 = a; System.out.println("Inside 2nd Constructor"); } Demo(int a,int b){ value1 = a; value2 = b; System.out.println("Inside 3rd Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); Demo d2 = new Demo(30); Demo d3 = new Demo(30,40); d1.display(); d2.display(); d3.display(); } }
Passo 2) Salve, compile e execute o código.
Passo 3) Ocorreu um erro. Tente depurar o erro antes de prosseguir para a próxima etapa de Sobrecarga de Construtores em Java.
Passo 4) Cada classe tem um padrão Construtor em JavaO construtor padrão para aula de demonstração is Demonstração()Se você não fornecer, o compilador criará para você e inicializará as variáveis com valores padrão.
No entanto, se você especificar um construtor parametrizado como Demo(int a) e deseja usar o padrão Demonstração()É obrigatório declará-lo explicitamente.
Passo 5) Remova o comentário das linhas 4 a 8 do código, salve, compile e execute o programa novamente para observar a mudança de comportamento.
Encadeamento de construtores em Java
Considere um cenário em que uma classe base é estendida por um filho. Sempre que um objeto da classe filha é criado, o construtor da classe pai é invocado primeiro. Isso é chamado Encadeamento de construtores.
Exemplo: Para entender o encadeamento de construtores com sobrecarga de construtores em Java
Passo 1) Copie o código a seguir no editor.
class Demo{ int value1; int value2; Demo(){ value1 = 1; value2 = 2; System.out.println("Inside 1st Parent Constructor"); } Demo(int a){ value1 = a; System.out.println("Inside 2nd Parent Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ DemoChild d1 = new DemoChild(); d1.display(); } } class DemoChild extends Demo{ int value3; int value4; DemoChild(){ //super(5); value3 = 3; value4 = 4; System.out.println("Inside the Constructor of Child"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); System.out.println("Value1 === "+value3); System.out.println("Value2 === "+value4); } }
Passo 2) Execute o código. Devido ao encadeamento de construtores, quando o objeto da classe filha DemoChild é criado, o construtor Demonstração() da classe pai é invocado primeiro e o construtor DemoChild() da criança que corre em seguida.
Resultado esperado:
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
Passo 3) Você pode observar que o construtor pai Demonstração() Executa por padrão. Para chamar o construtor sobrecarregado Demo(int a) Em vez disso, use a palavra-chave. "super".
Sintaxe:
super(); --or-- super(parameter list);
Exemplo: Se o construtor da sua linha de comando for como Demo(String Name, int a), você especificará super("Java”,5). Se usada, a palavra-chave grande Precisa ser a primeira linha de código no construtor da classe filha.
Passo 4) Remova o comentário da linha 26 e execute o código. Observe a saída.
Saída:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4

