Chame outro construtor em Java

Rupam Yadav 12 outubro 2023
  1. Chame um construtor de outro dentro da mesma classe em Java
  2. Chame um construtor de outro da classe base em Java
Chame outro construtor em Java

Em Java, a sequência de invocação de construtores na inicialização do objeto é chamada de encadeamento de construtor. É usado quando queremos invocar um construtor após o outro usando uma instância.

Chame um construtor de outro dentro da mesma classe em Java

Quando queremos chamar um construtor de outro construtor da mesma classe, usamos a palavra-chave this. Uma expressão que usa a palavra-chave this deve ser a primeira linha do construtor. A ordem não importa no encadeamento do construtor. Deve ter pelo menos um construtor que não use a palavra-chave this.

No exemplo abaixo, temos uma classe Test que possui 3 construtores. Um é o padrão sem nenhum parâmetro, enquanto os outros dois são parametrizados. No método main, instanciamos o objeto de classe com a palavra-chave new sem nenhum parâmetro passado.

Ele invoca o construtor padrão Test() que redireciona a chamada para o construtor parametrizado Test(String name) usando this("Steve"). O construtor Test(String name) redireciona ainda mais a chamada para o outro construtor parametrizado Test(int age, String place) usando this(30,"Texas").

As instruções dentro de Test(int age, String place) são executadas primeiro. Depois disso, o resto das instruções do construtor Test(String name) são executadas. Finalmente, a instrução restante do construtor padrão é executada e o objeto é inicializado com sucesso.

public class Test {
  Test() {
    this("Steve");
    System.out.println("Default Constructor");
  }
  Test(String name) {
    this(30, "Texas");
    System.out.println("Name - " + name);
  }
  Test(int age, String place) {
    System.out.println("Age- " + age + ", place- " + place);
  }
  public static void main(String[] args) {
    Test test = new Test();
  }
}

Resultado:

Age- 30, place- Texas
Name - Steve
Default Constructor

Chame um construtor de outro da classe base em Java

Quando há mais de uma classe com o relacionamento de herança, precisamos usar a palavra-chave super para chamar o construtor da classe pai da classe filha. Ao contrário da palavra-chave this, a JVM coloca automaticamente a palavra-chave super.

A classe base é a classe pai que é estendida pela classe derivada. O método main no qual instanciamos o objeto de classe invoca o construtor padrão da mesma classe, que redireciona ainda mais a chamada para o construtor parametrizado da classe filha usando this("Adam").

super(name) invoca o construtor parametrizado Base(String name) da classe Base. O construtor padrão da classe Base é invocado usando this(). A variável de classe também é inicializada aqui usando this.name = name.

O código dentro do construtor padrão da classe Base é executado. Posteriormente, as instruções dentro do construtor parametrizado Base(String name) são executadas. Finalmente, a instrução restante dentro do construtor parametrizado da classe Derived é executada.

class Base {
  String name;
  Base() {
    System.out.println("Default Constructor Base Class");
  }
  Base(String name) {
    this();
    this.name = name;
    System.out.println("Parameterized Constructor Base Class called:- " + name);
  }
}
class Derived extends Base {
  Derived() {
    this("Adam");
  }
  Derived(String name) {
    super(name);
    System.out.println("Parameterized Constructor Derived Class called: " + name);
  }
  public static void main(String[] args) {
    Derived derived = new Derived();
  }
}

Resultado:

Default Constructor Base Class
Parameterized Constructor Base Class called:- Adam
Parameterized Constructor Derived Class called: Adam
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java Constructor