Encadeamento de construtores em Java com exemplos e implementação

Publicados: 2023-06-05

Em Java, os Construtores podem ser entendidos como blocos de código usados ​​para inicializar objetos recém-criados. Um construtor é semelhante aos métodos de instância em Java. No entanto, há uma diferença crucial entre Construtores e métodos em Java – enquanto os métodos têm um tipo de retorno, os Construtores não têm nenhum tipo de retorno específico. Os programadores geralmente se referem aos Construtores como um tipo especial de método em Java.

Os construtores em Java têm o mesmo nome da classe e se parecem com o seguinte:

classe pública meuPrograma{

//Este é o construtor

meuPrograma(){

}

..

}

Quando um construtor é chamado de dentro de outro construtor, ocorre o encadeamento de construtores em Java. No entanto, antes de nos aprofundarmos no encadeamento de construtores, vamos primeiro dar uma olhada rápida em como os construtores funcionam em Java, juntamente com alguns exemplos para solidificar sua compreensão.

Índice

Como funcionam os construtores em Java?

Para entender como os construtores funcionam, vamos ver um exemplo. Suponha que tenhamos uma classe chamada myProgram. Agora, quando criarmos o objeto desta classe, teremos que escrever o seguinte comando:

meuPrograma obj = new meuPrograma()

Como você pode ver, a palavra-chave new usada no exemplo acima cria o objeto de myProgram e invoca um construtor para inicializar esse objeto recém-criado.

Se isso soa um pouco confuso para você, não se preocupe. Vejamos um programa construtor simples em Java para entender melhor o funcionamento dos Construtores em Java.

Programa construtor básico em Java

Observe o seguinte trecho de código Java que usa Construtores:

teste de classe pública{

Livro de cordas;

//Construtor

Teste(){

this.book = “Um Apanhador no Campo de Centeio”;

}

public static void main(String[] args) {

Teste obj = new Teste();

System.out.println(obj.book);

}

}

Saída:

Um Apanhador no Campo de Centeio

No programa acima, criamos um objeto chamado 'obj' de nossa classe Program. Em seguida, imprimimos o nome da variável de instância desse objeto recém-criado. Como você pode ver na saída, a saída é igual ao valor passado para 'book' durante a inicialização do Construtor.

O que isso mostra é que no momento em que o objeto obj foi criado, o Construtor foi invocado automaticamente. Aqui, usamos a palavra-chave 'this' para nos referirmos ao objeto atual. Também existem outras maneiras de fazer isso, sobre as quais falaremos mais adiante no artigo, ao discutir o encadeamento de construtores.

Com os fundamentos do Constructor em Java resolvidos, vamos passar para o Constructor Chaining em Java e como ele funciona!

Encadeamento de construtores dentro de uma única classe

Maso que é o encadeamento de construtores em Java envolvendo uma única classe?Chamar um construtor de outro na mesma classe inclui o encadeamento de construtores nessa classe. A palavra-chave “this” é usada na sintaxe para encadeamento de construtores dentro da mesma classe. A instância da classe atual é referida quando “this” é usado. É melhor entender o uso doencadeamento de construtores em Java com o exemplo .

Construtores encadeados de classes base/pai

Uma classe em Java pode derivar de outra classe; a classe derivada é referida como uma subclasse e a classe da qual ela deriva é referida como uma superclasse. Uma subclasse pode ter seus próprios construtores e invocar os de sua superclasse.

Um construtor de superclasse usa o termo super(), seguido pelas entradas necessárias. A palavra-chave super() sempre deve estar presente na primeira linha do construtor da subclasse.

Chamada de um construtor diferente, um construtor

Usando a palavra-chave this(), um construtor em Java pode chamar outro construtor da mesma classe. A primeira palavra-chave no construtor deve ser sempre a palavra-chave this(), que só pode ser usada para chamar outro construtor do mesmo tipo.

Construtor da superclasse de telefone

A palavra-chave super() em Java permite que construtores de subclasses chamem o construtor da superclasse. A palavra-chave super(), que só pode ser usada para chamar o construtor da superclasse da subclasse, deve sempre ser a primeira linha do construtor da subclasse.

Os programas Java podem se comportar de maneira diferente se os construtores forem organizados em uma sequência diferente. Se uma classe tiver muitos construtores e um deles usar a palavra-chave this() para chamar outro construtor, alterar a ordem dos construtores pode alterar o comportamento de um programa.

Uma maneira diferente de encadear construtores usando o bloco de inicialização

Usar um bloco de inicialização é outra abordagem para o encadeamento de construtores em Java .Uma seção de código conhecida como bloco de inicialização é executada

Fundamentos do encadeamento de construtores em Java

Quando chamamos um Construtor a partir de outro Construtor da mesma classe, o que acontece é conhecido como Encadeamento de Construtores. O objetivo principal de fazer o encadeamento de construtores é passar parâmetros por vários construtores diferentes e apenas inicializá-los em um só lugar. Dessa forma, você tem a chance de manter todas as suas inicializações em um único local, enquanto diferentes construtores podem ser fornecidos aos usuários.

Se você não executar o encadeamento de construtores e dois construtores diferentes exigirem um parâmetro, você precisará inicializar esse parâmetro duas vezes. Além disso, toda vez que a inicialização mudar, você precisará fazer as respectivas alterações em todos os construtores, em vez de apenas um.

Como regra geral, você deve sempre chamar Construtores com mais argumentos de Construtores com menos argumentos. Você também deve estar ciente de que podemos sobrecarregar vários construtores na classe. No entanto, no momento em que um objeto é criado, apenas um determinado Construtor é chamado. Pode haver algumas situações durante a programação em Java em que você precisaria chamar vários construtores um do outro sem criar objetos diferentes. Esse mecanismo de invocar um Construtor de outro construtor e quando esse Construtor envolvido invoca outro construtor é conhecido como encadeamento de construtores.

Aprendacursos de softwareonline nas melhores universidades do mundo.Ganhe Programas Executivos de PG, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Há duas coisas principais que você deve ter em mente em relação ao encadeamento de construtores para garantir a máxima clareza:

  • O objetivo principal do encadeamento de construtores é manter o código. A ideia é ajudá-lo a escrever apenas um trecho de código que possa ser reutilizado em seu programa. Dessa forma, seu código não apenas ficará limpo e legível, mas também será muito mais fácil de gerenciar com todas as correções e alterações acontecendo apenas em um local em vez de todos os Construtores.
  • O Construtor que foi invocado não cria um objeto separado. Em vez disso, ele usa o objeto atualmente em execução para invocar outro construtor. É como chamar um método diferente dentro do seu Construtor, exceto que também é um construtor.

Como você viu no exemplo anterior, usamos essa palavra-chave para acessar os parâmetros do Construtor. Da mesma forma, o Constructor Chaining também requer basicamente duas palavras-chave. Aqui estão essas duas palavras-chave:

  • this – Sua representação de método chama um construtor de classe atual.
  • super – Sua representação de método chama um construtor imediato de superclasse ou superclasse pai.

Além disso, você deve estar ciente de alguns outros termos e definições importantes em termos de encadeamento de construtores em Java:

  • Invocação do Construtor: Quando você invoca um Construtor e esse Construtor é invocado com sucesso, ele é conhecido como Invocação do Construtor.
  • Execução do Construtor: Se ao invocar o Construtor, o controle começa a executar as instruções no corpo do Construtor. É conhecido como execução do construtor.

Principais regras do encadeamento de construtores em Java

Com os fundamentos do Constructor Chaining resolvidos, vamos ver algumas regras essenciais para trabalhar com o Constructor Chaining em Java:

  • this() só pode chamar os parâmetros pertencentes ao mesmo Construtor.
  • super() só pode chamar o Construtor imediato da superclasse.
  • this() e super() devem ser a primeira instrução no Construtor.
  • This () e super() não podem ser usados ​​dentro do mesmo Construtor, pois ambos precisam ser as primeiras declarações, o que não é possível na prática.
  • Você não pode adicionar this() em todos os Construtores da mesma classe, pois deve haver pelo menos um Construtor sem a instrução this().
  • A invocação e execução de Construtores em Java acontecem de forma oposta. Portanto, se os construtores foram chamados na ordem A, B, C, a execução será na ordem C, B, A.

Por exemplo, aqui, temos duas classes separadas que estão trabalhando sobrecarregando diferentes Construtores. Queremos executar os construtores na ordem 2, 1, 4, 3, 5.

Para executar os construtores em ordem, precisamos chamá-los exatamente na ordem oposta, como 5, 3, 4, 1, 2, veja no exemplo abaixo.

pai da classe

{

Pai()// 1

{

this(“olá”);

System.out.println(“in Parent 0 arg constructor 1”);

}

Parent(String msg)// 2

{

System.out.println(“no construtor Parent(String) 2”);

}

}

classe Construtor estende Parent

{

Construtor()// 3

{

this(10);// chamando o construtor de 5 números

System.out.println(“in Constructor 0 arg constructor 3”);

}

Construtor(String msg)// 4

{

super();//chamando 1 número construtor de classe pai

System.out.println(“in Constructor(String msg) arg constructor 4”);

}

Construtor(int i)// 5

{

this(“olá”);//chamando o construtor de 4 números

System.out.println(“in Construtor(int i) construtor 5”);

}

//método main()

public static void main(String[] args)

{

Construtor cobj = new Construtor(); // chamando o construtor de 3 números

}

}

Saída:

no construtor Parent(String) 2

em Parent 0 arg constructor 1

in Constructor(String msg) arg constructor 4

em Construtor(int i) construtor 5

em Construtor 0 arg construtor 3

Resumindo todos os conceitos de Construtores e Encadeamento de Construtores em Java com um exemplo final:

classe Emp

{

string pública EName;

público int EEarnings;

endereço de string público;

public Emp()

{

this(“Raul”);

}

public Emp(String name)

{

this(nome, 140035);

}

public Emp(String name, int sal)

{

this(nome, sal, “Nova Deli”);

}

public Employee(String name, int sal, String add)

{

this.EName=nome;

this.EEarnings=sal;

this.address=adicionar;

}

void disp() {

System.out.println(“Nome: “+ENome);

System.out.println(“Salário: “+EReceita);

System.out.println(“Endereço: “+endereço);

}

public static void main(String[] args)

{

Empregado obj = new Empregado();

obj.disp();

}

}

Saída:

Nome do funcionário: Rahul

Salário do Funcionário: 140035

Endereço do funcionário: Nova Deli

Conclusão

Com isso, chegamos ao final deste artigo. Esperamos ter esclarecido suas dúvidas sobre Constructor Chaining em Java e solidificado ainda mais sua compreensão. Na upGrad, acreditamos em ajudar estudantes de todo o mundo a atingir todo o seu potencial e ter sucesso em suas carreiras. Nossos cursos são projetados tendo em mente tanto os calouros quanto os profissionais experientes.

Um desses cursos é a certificação PG vinculada ao trabalho da upGrad em engenharia de software , projetada especificamente para candidatos a emprego pela primeira vez. Confira o conteúdo do curso e matricule-se hoje mesmo! Aprenda todas as habilidades relevantes de Engenharia de Software, como Java, DSA, OODAP, JavaScript, MERN, AWS, etc., com especialistas do setor e profissionais líderes.

P: É possível encadear mais de dois construtores em Java?

Java permite no máximo duas cadeias de construtores. Você pode criar objetos mais complexos e reduzir a duplicação de código fazendo isso.

P: Quando um construtor em Java chama a si mesmo, o que acontece?

Um construtor em Java que chama a si mesmo resultará em um erro de estouro de pilha e um loop indefinido.

P: Qual é a aparência do construtor padrão em Java?

Um construtor padrão em Java é aquele que não aceita entradas. Se não houver um construtor declarado na classe, um será produzido automaticamente.