|
Pour instancier une
classe, c'est-à-dire créer un objet à
partir d'une classe, il s'agit d'utiliser l'opérateur
new.
En réalité l'opérateur new, lorsqu'il
est utilisé, fait appel à une méthode
spéciale de la classe: le constructeur.
Le rôle du constructeur
est de déclarer et de permettre d'initialiser les données
membres de la classe, ainsi que de permettre différentes
actions (définies par le concepteur de la classe) lors
de l'instanciation.
Un constructeur se définit
comme une méthode standard, mais ne renvoie aucune
valeur.
Ainsi, le constructeur d'un objet porte le même nom
que la classe et ne possède aucune valeur de retour
(même pas void).
|
- un constructeur porte le même
nom que la classe dans laquelle il est défini
- un constructeur n'a pas de type de
retour (même pas void)
- un constructeur peut avoir des arguments
- la définition d'un constructeur
n'est pas obligatoire lorsqu'il n'est pas nécessaire
|
La définition de cette
fonction membre spéciale n'est pas obligatoire (si
vous ne souhaitez pas initialiser les données membres
par exemple) dans la mesure où un constructeur par
défaut (appelé parfois constructeur sans
argument) est défini par le compilateur Java si
la classe n'en possède pas.
Voyons sur un exemple comment
se déclare un constructeur:
class Toto{
int age;
char sexe;
float taille;
Toto(int age, char sexe, float taille){
this.age = age;
this.sexe = sexe;
this.taille = taille;
}
Comme pour n'importe quelle
méthode, il est possible de surcharger les constructeurs,
c'est-à-dire définir plusieurs constructeurs
avec un nombre/type d'arguments différents. Ainsi,
il sera possible d'initialiser différemment un même
objet, selon la méthode de construction utilisée.
Imaginons par exemple que pour
l'exemple précédent on veuille pouvoir définir
le sexe de Toto grâce à un entier valant 0 ou
1, ainsi qu'avoir la possibilité de passer en paramètre
la lettre 'M' ou 'F', on peut alors définir deux constructeurs
pour lesquels le type du second argument sera différent.
De plus, on va montrer de quelle manière il est possible
de contrôler le caractère entré en paramètre:
class Toto{
int age;
char sexe;
float taille;
Toto(int age, char sexe, float taille){
this.age = age;
if ((sexe=='M')||(sexe=='F')) {
this.sexe = sexe;
}
else System.out.println("Erreur d'initialisation");
this.taille = taille;
}
Toto(int age, int sexe, float taille){
this.age = age;
switch (sexe) {
case 0:
this.sexe = 'F';
break;
case 1:
this.sexe = 'M';
break;
default:
System.out.println("Erreur d'initialisation");
break;
}
this.taille = taille;
}
}
 
|