
Chapitre 4 Héritage et Polymorphisme
Cours POO (Java) - 35 - Amir Souissi © 2018
Remarques :
Lorsque les attributs abs et ord de la classe Point sont déclarés protégés, alors ils sont
considérés aussi des attributs de la classe PointColore. On peut alors les accéder aussi bien
par super que par this. ( super.abs ou this.abs donnent le même résultat)
Si on déclare un attribut abs dans PointColore alors dans ce cas, this.abs fait référence à
l’attribut de PointColore et super.abs fait référence à l’attribut de Point.
Exemple:
class Point {
...
protected void afficher(){
System.out.println(“abs = ” + abs + “ord = ” + ord);
}
}
class PointColore extends Point {
...
public void afficherCouleur(){
System.out.println(“couleur = ” + couleur);
}
}
...
public static void main(String args[]) {
PointColore pc = new PointColore (1, 2, “noir”);
pc.afficher() ;
//objet pc utilise afficher() de Point comme si c’était sa méthode
pc.afficherCouleur() ;
}
Dans cet exemple, l’affichage de tous les attributs d’un PointColore doit passer par l’appel de
la méthode afficher() de Point et afficherCouleur() de PointColore.
La méthode afficher() de Point est partiellement utile à PointColore. On pourra ajouter une
méthode void afficher() à la classe PointColore et ainsi ne plus utiliser celle de Point : on
appelle ça la redéfinition de méthode.
2. Redéfinition des méthodes héritées
Une méthode héritée peut être redéfinie si sa version initiale n’est pas satisfaisante pour la
classe dérivée.
La redéfinition consiste à conserver la signature de la méthode (même nom, même
nombre, type et position des paramètres, même type de retour) et à proposer un code
différent.