Chiama un altro costruttore in Java

Rupam Yadav 12 ottobre 2023
  1. Chiama un costruttore da un altro all’interno della stessa classe in Java
  2. Chiama un costruttore da un altro dalla classe base in Java
Chiama un altro costruttore in Java

In Java, la sequenza di invocazione dei costruttori durante l’inizializzazione dell’oggetto è chiamata concatenamento dei costruttori. Viene utilizzato quando si desidera richiamare un costruttore dopo l’altro utilizzando un’istanza.

Chiama un costruttore da un altro all’interno della stessa classe in Java

Quando vogliamo chiamare un costruttore da un altro costruttore all’interno della stessa classe, usiamo la parola chiave this. Un’espressione che utilizza la parola chiave this deve essere la prima riga del costruttore. L’ordine non ha importanza nel concatenamento del costruttore. Deve avere almeno un costruttore che non utilizzi la parola chiave this.

Nell’esempio seguente, abbiamo una classe Test che ha 3 costruttori. Uno è quello di default senza parametri, mentre gli altri due sono parametrizzati. Nel metodo main, istanziamo l’oggetto classe con la parola chiave new senza che sia passato alcun parametro.

Richiama il costruttore predefinito Test() che reindirizza la chiamata al costruttore parametrizzato Test(String name) usando this("Steve"). Il costruttore Test(String name) reindirizza ulteriormente la chiamata all’altro costruttore parametrizzato Test(int age, String place) usando this(30,"Texas").

Le istruzioni all’interno del Test(int age, String place) vengono eseguite per prime. Dopodiché, vengono eseguite le restanti istruzioni del costruttore Test(String name). Infine, viene eseguita l’istruzione rimanente del costruttore predefinito e l’oggetto viene inizializzato correttamente.

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();
  }
}

Produzione:

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

Chiama un costruttore da un altro dalla classe base in Java

Quando c’è più di una classe con la relazione di ereditarietà, dobbiamo usare la parola chiave super per chiamare il costruttore della classe genitore dalla classe figlia. A differenza della parola chiave questo, la JVM inserisce automaticamente la parola chiave super.

La classe base è la classe genitore che viene estesa dalla classe derivata. Il metodo principale in cui istanziamo l’oggetto classe invoca il costruttore predefinito della stessa classe, che reindirizza ulteriormente la chiamata al costruttore parametrizzato della classe figlia usando this("Adam").

super(name) invoca il costruttore parametrizzato Base(String name) della classe Base. Il costruttore predefinito della classe Base viene invocato usando this(). Anche la variabile di classe viene inizializzata qui usando this.name = name.

Viene eseguito il codice all’interno del costruttore predefinito della classe Base. Successivamente vengono eseguite le istruzioni all’interno del costruttore parametrizzato Base(String name). Infine, viene eseguita la restante istruzione all’interno del costruttore parametrizzato della classe Derived.

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();
  }
}

Produzione:

Default Constructor Base Class
Parameterized Constructor Base Class called:- Adam
Parameterized Constructor Derived Class called: Adam
Autore: Rupam Yadav
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