Chaînage des constructeurs

           



Un constructeur sert à construire des objets selon
le modèle de la classe qui le contient. Quand on instancie
une classe, un constructeur de cette classe est
automatiquement   appelé, ce qui fait que
toute classe possède au moins un constructeur.

Un constructeur a toujour même nom que la classe et n'indique pas de valeur explicite de retour ; il renvoie en fait l'adresse de l'objet construit. Si une classe n'indique dans son code aucun constructeur, le compilateur en ajoute automatiquement un. Ce constructeur ajouté, s'il s'agit de la classe MaClasse, a la forme suivante :
public class MaClasse {
public MaClasse() {
super();
}
...
}
Tout constructeur, sauf celui de la classe java.lang.Object, fait appel à un autre constructeur qui est : Cet appel est mis nécessairement en première ligne du constructeur. En cas d'absence de cet appel, le compilateur ajoute super(); en première ligne du constructeur.

On peut regarder l'exemple suivant, qui sert d'exercice. Il s'agit de savoir quelle est la sortie de la méthode main de la classe EssaiSuper

public class A {
public A() {
System.out.println("constructeur de A");
}
}

public class B extends A {
public B(){
System.out.println("constructeur de B");
}

public B(int r) {
this();
System.out.println("autre constructeur de B");
}
}

public class C extends B {
public C() {
super(3);
System.out.println("constructeur de C");
}
}
public class EssaiChainage {
public static void main(String[] argv) {
new C();
}
}

Le fichier EssaiChainage.java


this(); : c'est un appel au constructeur sans paramètre de la même classe, c'est-à-dire de la classe B.
super(3); : c'est un appel au constructeur avec un paramètre de type int de la superclasse classe, c'est-à-dire de la classe B.

© Irène Charon Télécom ParisTech 2012