L’héritage
CHAPITRE 12
248
1 La notion d’héritage
Supposons que nous disposions de cette classe Point (n’offrant pas ici de constructeur) :
classe Point
{ méthode initialise (entier x, entier y) { abs := x ; ord := y }
méthode déplace (entier dx, entier dy) { abs := abs + dx ; ord := ord + dy ; }
méthode affiche { écrire «Je suis en », x, « », y }
entier abs, ord
}
Une classe de base Point
Imaginons que nous ayons besoin d’une classe Pointcol, destinée à manipuler des points
colorés d’un plan. Une telle classe peut manifestement disposer des mêmes fonctionnalités
que la classe Point, auxquelles on pourrait adjoindre, par exemple, une méthode nommée
colore, chargée de définir la couleur. Nous pouvons donc la définir en disant qu’elle
« hérite » de Point et en précisant les attributs et méthodes supplémentaires. Nous conviendrons de procéder ainsi :
classe PointCol dériveDe Point
{ // définition des méthodes supplémentaires
// déclaration des attributs supplémentaires
}
Si nous prévoyons, outre la méthode colore, un attribut nommé couleur, de type entier,
destiné à représenter la couleur d’un point, voici comment pourrait s’écrire la définition de la
classe Pointcol :
classe Pointcol dériveDe Point
// Pointcol dérive de Point
{ méthode colore (entier c) { couleur := c }
entier couleur
}
Une classe Poincol, dérivée de Point
Disposant de cette classe, nous pouvons déclarer des variables de type Pointcol et créer
des objets de ce type de manière usuelle, par exemple :
Pointcol pc ;
.....
pc := Création Pointcol
Un objet de type Pointcol peut alors faire appel :
• aux méthodes publiques de Pointcol, ici colore ;
• mais aussi aux méthodes publiques de Point : initialise, déplace et affiche.
Notez que, bien que cela soit peu recommandé, il est théoriquement possible de prévoir certains attributs publics. Dans ce cas, un objet de type Pointcol aura également accès aux
Précédent

- 271/370

Suivant