Sobrecarga de construtor em Java:o que é e exemplos de programas
O que é Construtor em Java?
Construtor é um método especial que é usado para inicializar um objeto recém-criado e é chamado logo após a alocação da memória para o objeto. Ele pode ser usado para inicializar os objetos com os valores desejados ou valores padrão no momento da criação do objeto. Não é obrigatório para o codificador escrever um construtor para uma classe.
Se nenhum construtor definido pelo usuário for fornecido para uma classe, o compilador inicializará as variáveis de membro com seus valores padrão.
- os tipos de dados numéricos são definidos como 0
- os tipos de dados char são definidos como caractere nulo('\0')
- variáveis de referência são definidas como nulas
Neste tutorial, você aprenderá-
- Regras para criar um Construtor
- Sobrecarga de construtor em Java
- Encadeamento de construtor
Regras para criar um construtor Java
- Tem o mesmo nome como a classe
- Não deve retornar um valor nem mesmo void
Exemplo 1 :Crie seu primeiro construtor em Java
Etapa 1) Digite o seguinte programa construtor no editor Java.
class Demo{ int value1; int value2; Demo(){ value1 = 10; value2 = 20; System.out.println("Inside Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); d1.display(); } }
Etapa 2) Salve, execute e compile o programa construtor em Java e observe a saída.
Saída:
Inside Constructor Value1 === 10 Value2 === 20
Sobrecarga de construtor em Java
A sobrecarga de construtores Java é uma técnica na qual uma classe pode ter qualquer número de construtores que diferem na lista de parâmetros. O compilador diferencia esses construtores levando em consideração o número de parâmetros na lista e seu tipo.
Exemplos de construtores válidos para a classe Account são
Account(int a); Account (int a,int b); Account (String a,int b);
Exemplo 2 :Para entender a sobrecarga de construtor em Java
Etapa 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(); } }
Etapa 2) Salve, compile e execute o código.
Etapa 3) Erro =?. Tente e depure o erro antes de prosseguir para a próxima etapa da sobrecarga do construtor Java
Etapa 4) Cada classe tem um construtor padrão em Java. Construtor sobrecarregado padrão Java para class Demo é Demonstração() . Caso você não forneça esse construtor, o compilador o cria para você e inicializa as variáveis com os valores padrão. Você pode optar por substituir esse construtor padrão e inicializar as variáveis com os valores desejados, conforme mostrado no Exemplo 1.
Mas se você especificar um construtor parametrizado como Demo(int a), e quiser usar o construtor padrão Java Demo(), é obrigatório especificá-lo.
Em outras palavras, caso seu construtor de sobrecarga em Java seja substituído e você queira usar o construtor padrão Java, ele precisa ser especificado.
Etapa 5) Descomente a linha # 4-8. Salve, compile e execute o código.
Encadeamento do Construtor
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 de Encadeamento de construtor.
Exemplo 3: Para entender o encadeamento de construtores
Etapa 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); } }
Etapa 2) Execute o Código. Devido ao encadeamento de construtores, quando o objeto da classe filho DemoChild é criado, o construtor Demo() da classe pai é invocado primeiro e depois o construtor DemoChild() do filho é criado.
Saída esperada =
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
Etapa 3) Você pode observar que o construtor da classe pai Demo é substituído. E se você quiser chamar o construtor substituído Demo(int a) em vez do construtor padrão Demo() quando seu objeto filho for criado?
Nesses casos, você pode usar a palavra-chave “super” para chamar construtores substituídos da classe pai.
Sintaxe:-
super(); --or-- super(parameter list);
Exemplo: Se o seu construtor for como Demo(String Name,int a) , você especificará super(“Java”,5) . Se usada, a palavra-chave super precisa ser a primeira linha de código no construtor da classe filha.
Etapa 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
Java
- Sobrecarga do construtor C#
- Programa Java Hello World
- Construtores Java
- Construtor de enumeração Java
- Método Java String indexOf() com substring e exemplos
- Método Java String compareTo():como usar com exemplos
- Variável estática em Java:o que é bloco e método estático [exemplo]
- Programa Java para verificar o número primo
- Programa para imprimir números primos de 1 a 100 em Java
- Como converter Char para String em Java (Exemplos)