Droits d’accès d’une classe dérivée à sa classe de base
251
Cette règle peut paraître restrictive. Mais en son absence, il suffirait de créer une classe
dérivée pour violer le principe d’encapsulation. Autrement dit, une modification de
l’implémentation d’une classe de base risquerait d’entraîner une modification de
l’implémentation d’une classe dérivée.
Si l’on considère la classe Pointcol précédente, elle ne dispose pour l’instant que d’une
méthode affiche, héritée de Point qui, bien entendu, ne fournit pas la couleur. On peut
chercher à la doter d’une nouvelle méthode nommée par exemple affichec, fournissant à la
fois les coordonnées du point coloré et sa couleur. Il ne sera pas possible de procéder ainsi :
méthode affichec // méthode affichant les coordonnees et la couleur
{ écrire «Je suis en », abs, « », ord
// NON : abs et ord sont privés
écrire « et ma couleur est : », couleur
// OK
}
En effet, la méthode affichec de Pointcol n’a pas accès aux attributs privés abs et ord
de sa classe de base.
Remarque
Certains langages permettront toutefois d’affaiblir cette contrainte en prévoyant des
mécanismes d’autorisation sélectifs, comme nous le verrons au paragraphe 7, page 263.
2.2 Une classe dérivée accède aux membres publics
Comme on peut s’y attendre :
Ainsi, pour écrire la méthode affichec, nous pouvons nous appuyer sur la méthode affiche de Point en procédant ainsi :
méthode affichec
{ affiche()
écrire « et ma couleur est : », couleur
}
Une méthode d’affichage d’un objet de type Pointcol
Une méthode d’une classe dérivée n’a pas accès aux membres (attribut ou
méthodes) privés de sa classe de base.
Une méthode d’une classe dérivée a accès aux membres publics de sa classe de
base.
Précédent

- 274/370

Suivant