36
Les constructeurs Les constructeurs … …
Un constructeur est une méthode particulière qui est appelée automatiquement à la création d'un objet et qui permet d'initialiser correctement cet objet.
Le constructeur est appelé lors de l'allocation de l'objet par new (et non lors de la déclaration de la référence).
Un constructeur se reconnaît facilement en Java:
- il porte le même nom que la classe - il n'a pas de type de retour (même pas void)
On peut définir plusieurs constructeurs pour une même classe, s'ils ont une signature différente.
37
Les constructeurs: rôle et d Les constructeurs: rôle et dé éfinition finition
Pour créer un compte, on a deux manières
Compte cpte1 = new Compte(135, "Dupont"); //instanciation avec appel du premier constructeur
Compte cpte2 = new Compte(159, "Martin", 1500); //instanciation avec appel du 2°constructeur
Mais on ne peut pas écrire:
Compte cpte3 = new Compte();
38public class Compte{
private int numero;
private String nom;
private double solde;
public Compte(int UnNumero, String UnNom){ //1
erconstructeur this.numero = UnNumero;
this.nom = unNom;
this.solde = 0;
}
public Compte (int UnNumero, String UnNom, double SoldeInitial){
//deuxième constructeur this.numero = UnNumero;
this.nom = unNom;
this.solde = SoldeInitial;
} }
Les constructeurs: Exemple Les constructeurs: Exemple
Si aucun constructeur n'est défini explicitement, le compilateur en créé un quand même.
Ce constructeur défini par défaut ne comporte pas de paramètres et initialise tous les attributs à leur valeur par défaut (0 pour les variables numériques, NULL pour les références, "" pour les chaînes de caractères, …).
Mais dès lors qu'un constructeur est défini explicitement, le compilateur n'en créé pas d'autre.
L'utilisateur est obligé, à l'instanciation, de passer les paramètres requis par l'un des constructeurs explicite. Mais le concepteur de la classe peut créer son propre constructeur par défaut (c'est-à-dire sans paramètres).
Même lorsque l'instanciation ne comporte aucun paramètre (appel du constructeur par défaut s'il existe), il faut mettre les parenthèses.
Exemple:
Compte cpte = new Compte();
39
Les constructeurs Les constructeurs
On peut alors instancier un objet de type Compte de la façon suivante:
40