Appelez un autre constructeur en Java

Rupam Yadav 12 octobre 2023
  1. Appel d’un constructeur à partir d’un autre dans la même classe en Java
  2. Appeler un constructeur d’un autre depuis la classe de base en Java
Appelez un autre constructeur en Java

En Java, la séquence d’invocation des constructeurs lors de l’initialisation de l’objet est appelée chaînage des constructeurs. Elle est utilisée lorsque nous voulons invoquer un constructeur après l’autre en utilisant une instance.

Appel d’un constructeur à partir d’un autre dans la même classe en Java

Lorsque nous voulons appeler un constructeur à partir d’un autre constructeur de la même classe, nous utilisons le mot-clé this. Une expression qui utilise le mot-clé this doit être la première ligne du constructeur. L’ordre n’a pas d’importance dans l’enchaînement des constructeurs. Il doit avoir au moins un constructeur qui n’utilise pas le mot-clé this.

Dans l’exemple ci-dessous, nous avons une classe Test qui a 3 constructeurs. L’un est celui par défaut sans aucun paramètre, tandis que les deux autres sont paramétrés. Dans la méthode main, nous instancions l’objet de classe avec le new mot-clé sans aucun paramètre passé.

Elle invoque le constructeur par défaut Test() qui redirige l’appel vers le constructeur paramétré Test(String name) en utilisant this("Steve"). Le constructeur Test(String name) redirige ensuite l’appel vers l’autre constructeur paramétré Test(int age, String place) en utilisant this(30, "Texas").

Les instructions à l’intérieur du Test(int age, String place) sont exécutées en premier. Après cela, le reste des instructions du constructeur Test(String name) sont exécutées. Enfin, l’instruction restante du constructeur par défaut est exécutée, et l’objet est initialisé avec succès.

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

Production :

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

Appeler un constructeur d’un autre depuis la classe de base en Java

Lorsqu’il y a plus d’une classe avec la relation d’héritage, nous devons utiliser le mot-clé super pour appeler le constructeur de la classe parentale à partir de la classe enfant. Contrairement au mot-clé this, la JVM met automatiquement le mot-clé super.

La classe de base est la classe parente qui est étendue par la classe dérivée. La méthode principale dans laquelle nous instancions l’objet classe invoque le constructeur par défaut de la même classe, ce qui redirige ensuite l’appel vers le constructeur paramétré de la classe enfant en utilisant this("Adam").

super(name) invoque le constructeur paramétré Base(String name) de la classe Base. Le constructeur par défaut de la classe Base est invoqué en utilisant this(). La variable de classe est également initialisée ici en utilisant this.name = name.

Le code dans le constructeur par défaut de la classe Base s’exécute. Plus tard, les instructions à l’intérieur du constructeur paramétré Base(String name) s’exécutent. Enfin, l’instruction restante dans le constructeur paramétré de la classe Derived est exécutée.

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

Production :

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

Article connexe - Java Constructor