Sobrecarga do construtor em Java: o que é & Exemplos de programas

Índice:

Anonim

O que é Construtor em Java?

CONSTRUCTOR é um método especial usado para inicializar um objeto recém-criado e é chamado logo depois que a memória é alocada 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
  • tipos de dados char são definidos para caracteres nulos ('\ 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

  1. Tem o mesmo nome da classe
  2. Não deve retornar um valor nem mesmo vazio

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.

Resultado:

Inside ConstructorValue1 === 10Value2 === 20

Sobrecarga de construtor em Java

A sobrecarga do Construtor 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 do 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) Salvar, compilar e executar o código.

Etapa 3) Erro =?. Tente depurar 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. O construtor Java sobrecarregado padrão para a classe Demo é Demo () . Caso você não forneça este 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 sobrescrito e você queira usar o construtor padrão Java, ele precisa ser especificado.

Etapa 5) Retire o comentário da linha 4-8. Salve, compile e execute o código.

Encadeamento de Construtor

Considere um cenário onde uma classe base é estendida por um filho. Sempre que um objeto da classe filha é criado, o construtor da classe pai é chamado primeiro. Isso é chamado de encadeamento de construtor.

Exemplo 3: Para entender o encadeamento do construtor

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 do construtor, quando o objeto da classe filha DemoChild é criado, o construtor Demo () da classe pai é invocado primeiro e, posteriormente, o construtor DemoChild () da classe filha é criado. Saída esperada =

Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4

Etapa 3) Você pode observar que o construtor da classe pai Demo foi sobrescrito. 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 do 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.

Resultado:

Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4