constructor_declaration
::=
{ modifier } identifier "(" [ parameter_list ] ")"
statement_block
This rule is called by
Explicationsnew. Il est chargé
d'initialiser les valeurs du nouvel objet.
Le constructeur doit porter le même nom que la classe et ne retourne
aucun type, pas même void. Il peut également y avoir
surcharge de constructeurs.
Exemple
class Crayon {
protected int longueur = 100; // en millimetres
protected int diametre = 5; // en millimetres
// cree un crayon standard
public Crayon() {
}
// cree un crayon de longueur l et de diametre d
public Crayon(int l,int d) {
longueur = l;
diametre = d;
}
public int quelleLongueur() {
return longueur;
}
public int quelDiametre() {
return diametre;
}
public void changeLongueur(int nouvelleLongueur) {
longueur = nouvelleLongueur;
}
}
Dans cette exemple, nous déclarons deux constructeurs. Le premier,
Crayon() initialise les variables en utilisant les
valeurs par défaut. Le deuxième constructeur,
Crayon(int l,int d), utilise les valeurs fournies au
constructeur pour initialiser l'objet.
Si l'on crée une classe qui hérite
d'une autre classe, on peut faire appel à l'un des constructeurs
de la super-classe en utilisant le mot clé super.
Dans l'exemple ci-dessous, le constructeur
CrayonCouleur(int, int, String) fait appel au
constructeur de Crayon en appelant super(l,d).
Exemple
class CrayonCouleur extends Crayon {
protected String couleur = "gris";
public CrayonCouleur() {
super();
}
public CrayonCouleur(int l,int d,String c) {
super(l,d); // initialise les variables longueur
// et diametre en utilisant le
// constructeur de la "superclass"
couleur = c;
}
public CrayonCouleur(String c) {
super();
couleur = c;
}
public String quelleCouleur() {
return couleur;
}
public void changeCouleur(String nouvelleCouleur) {
couleur = nouvelleCouleur;
}
}
Notons que l'appel au constructeur super() doit être
la première instruction du bloc, et qu'il doit même figurer avant
la déclaration de variables.