Vous êtes sur la page 1sur 3

3.

Les constructeurs et l’héritage :

Les constructeurs de la classe Rectangle ont pour rôle


d'initialiser les attributs de la classe Rectangle, y
compris les attributs hérités de la super-classe
FigureGéométrique. Cependant, ce ne doit pas être le
concepteur de la classe Rectangle qui doit lui-même
initialiser les attributs de la classe FigureGéométrique.
Il serait peut-être même bien incapable de le faire si la
super-classe avait des attributs privés Il ne pourrait pas
y accéder.

Et donc, comment le concepteur de la sous-classe Rectangle peut-il initialiser les attributs de


la super-classe FigureGéométrique?

Pour cela, il doit faire appel dans le constructeur de Rectangle au constructeur de la classe
FigureGéométrique. L'initialisation des attributs hérités doit se faire en appelant les
constructeurs des super-classes dans le constructeur des sous-classes.

Le constructeur par défaut de la super-classe est appelée automatiquement lors de la création


d’un nouvel objet de la sous-classe mais pour pouvoir appeler le constructeur de la super-classe
avec des arguments dans le constructeur de la sous-classe, il suffit d'utiliser la méthode super.
Et pour cela, il faut bien-sûr que cet appel soit fait au tout début du corps de constructeur de
la sous-classe comme suit :
La syntaxe:

SousClasse (Liste de paramètres){


super(arguments) ;
// initialisation des attributs de SousClasse
}

Dans le constructeur de la sous-classe, qui peut recevoir différents paramètres, tout au début
de son corps, on aura ici un appel à un des constructeurs de la super-classe en écrivant
simplement exactement comme cela le mot clé super.

Et puis, en passant donc à ce constructeur les arguments nécessaires pour le constructeur de


la super-classe que l'on veut appeler, ensuite derrière cette première ligne du constructeur de
la sous-classe, on pourra continuer à initialiser les attributs de la sous-classe.

A noter que si donc la super-classe admet un constructeur par défaut, il n'est pas
nécessaire d'écrire explicitement l'appel au constructeur de la super-classe car le compilateur
se charge pour vous d'appeler le constructeur par défaut de la super-classe.

11
Exemple d’un constructeur avec paramètres :

Dans cet exemple le constructeur de Rectangle(x,y,l,h) a l’instruction super(x,y) qui fait appel
au constructeur de la super-classe FigureGeometrique(x,y) donc ce constructeur va s’exécuter
en premier lieu puis il aura l’initialisation de largeur et hauteur.

Exemple d’un constructeur par défaut

Dans cet exemple le constructeur de Rectangle(l,h) fait appel au constructeur de la super-classe


FigureGeometrique() d’une manière implicite (le compilateur se charge pour vous d'appeler le
constructeur par défaut de la super-classe) donc ce constructeur va s’exécuter en premier lieu
puis il aura l’initialisation de largeur et hauteur.

12
3.1 Ordre d’appel des constructeurs

4. Accès à une méthode masquée


S’il y a une méthode déjà redéfinie dans la sous classe et on veut appeler la même
méthode de la super classe alors on procède de la façon suivante :
Syntaxe
super.methode() ;

exemple :
si je veux utiliser la méthode : m3() de la classe B dans la méthode m5() de la classe C alors

m5(…){
super.m3()
}

13

Vous aimerez peut-être aussi