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
Lembre-se de que alterar a ordem do construtor não afeta a saída.
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.
- 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:
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
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: