logo

O que é encadeamento de construtores em Java?

Em Java, encadeamento de construtor é uma sequência de invocação construtores ao inicializar um objeto. É usado quando queremos invocar vários construtores, um após o outro, usando apenas uma instância. Nesta seção, discutiremos encadeamento de construtores em Java em detalhes com exemplos adequados. Vamos dar uma olhada rápida o que é um construtor em Java.

Construtor

Em Java , um construtor é igual a um método, mas a única diferença é que o construtor tem o mesmo nome que o nome da classe. É usado para criar uma instância da classe. É chamado automaticamente quando criamos um objeto da classe. Não possui tipo de retorno. Lembre-se de que um construtor não pode ser abstrato , final , sincronizado , e estático . Não podemos substituir um construtor.

Existem dois tipos de construtor em Java:

  • Construtor padrão (também conhecido como construtor sem argumento)
  • Construtor parametrizado

Encadeamento de Construtor

Na cadeia de construtores, um construtor é chamado de outro construtor na mesma classe, este processo é conhecido como encadeamento de construtor. Ocorre por herança. Quando criamos uma instância de uma classe derivada, todos os construtores da classe herdada (classe base) são invocados primeiro, depois disso o construtor da classe chamadora (classe derivada) é invocado.

Podemos conseguir o encadeamento de construtores de duas maneiras:

Diana Ankudinova
    Dentro da mesma turma:Se os construtores pertencem à mesma classe, usamos esse Da classe base:Se o construtor pertencer a classes diferentes (classes pai e classe filha), usamos o método super palavra-chave para chamar o construtor da classe base.

Lembre-se de que alterar a ordem do construtor não afeta a saída.

O que é encadeamento de construtores em Java

A necessidade de encadeamento de construtores

Suponha que haja cinco tarefas a serem executadas. Existem duas maneiras de realizar essas tarefas: implementar todas as tarefas em um único construtor ou criar tarefas separadas em um único construtor.

data java para string

Usando o mecanismo de encadeamento de construtores, podemos implementar múltiplas tarefas em um único construtor. Portanto, sempre que enfrentarmos esse tipo de problema, devemos usar o encadeamento de construtores. Podemos tornar o programa mais legível e compreensível usando o encadeamento de construtores.

Regras de encadeamento de construtores

  • Uma expressão que usa esse palavra-chave deve ser a primeira linha do construtor.
  • Ordemnão importa no encadeamento de construtores.
  • Deve existir pelo menos um construtor que não use esse

Construtor Chamando de outro Construtor

A chamada do construtor pode ser feita de duas maneiras:

    Usando a palavra-chave this():É usado quando queremos chamar o construtor da classe atual dentro da mesma classe.Usando a palavra-chave super():É usado quando queremos chamar o construtor da superclasse da classe base.

Nota: No mesmo bloco construtor, não podemos usar this() e super() simultaneamente.

Vamos entender esses dois conceitos por meio de programas Java.

Exemplos de encadeamento de construtores

Chamando o construtor da classe atual

Nós usamos esse() palavra-chave se quisermos chamar o construtor da classe atual dentro da mesma classe. O uso de this() é obrigatório porque JVM nunca coloque-o automaticamente como o super() palavra-chave. Observe que this() deve ser a primeira linha do construtor. Deve existir pelo menos um construtor sem esta() palavra-chave .

Sintaxe:

 this(); or this(parameters list); 

Por exemplo:

 this(); this('Javatpoint'); 

Vamos criar um programa Java e chamar o construtor da classe atual.

ConstrutorChain.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

Saída:

algoritmo de cabine
O que é encadeamento de construtores em Java

No exemplo acima, criamos uma instância da classe sem passar nenhum parâmetro. Ele primeiro chama o construtor padrão e o construtor padrão redireciona a chamada para o parametrizado por causa de this(). As instruções dentro do construtor parametrizado são executadas e retornam ao construtor padrão. Depois disso, o restante das instruções no construtor padrão é executado e o objeto é inicializado com sucesso. A seguir está a sequência de chamada do construtor:

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

Chamando o construtor da superclasse

Às vezes, precisamos chamar o construtor da superclasse (classe pai) da classe filha (classe derivada). Nesses casos, usamos a palavra-chave super() no construtor da classe derivada. É opcional escrever super() porque a JVM o coloca automaticamente. Deve sempre escrever na primeira linha. Receberemos um erro de sintaxe se tentarmos chamar um construtor de superclasse na classe filha.

Sintaxe:

 super(); or super(Parameter List); 

super(): Ele chama o construtor sem argumento ou padrão da superclasse.

super(parâmetros): Ele invoca o construtor parametrizado da superclasse.

Lembre-se de que o construtor da superclasse não pode ser herdado na subclasse. Ele pode ser chamado a partir do construtor da subclasse usando a palavra-chave super.

Vamos criar um programa Java e implementar o encadeamento de construtores em uma classe herdada.

concat strings java

ConstrutorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

Saída:

O que é encadeamento de construtores em Java