Rappels
Le concept d’héritage constitue l’un des fondements de la Programmation Orientée
Objet. Il permet de définir une nouvelle classe B dite « dérivée », à partir d’une classe
existante A, dite « de base » ; pour ce faire, on procède ainsi :
class B : public A // ou : private A ou (depuis la version 3) protected A
{ // définition des membres supplémentaires (données ou fonctions)
// ou redéfinition de membres existants dans A (données ou fonctions)
} ;
Avec public A, on parle de « dérivation publique » ; avec private A, on parle de
« dérivation privée » ; avec protected A, on parle de « dérivation protégée ».
Modalités d’accès à la classe de base
Les membres privés d’une classe de base ne sont jamais accessibles aux fonctions
membre de sa classe dérivée.
Outre les « statuts » public ou privé (présentés au chapitre 3), il existe un statut
« protégé ». Un membre protégé se comporte comme un membre privé pour un
utilisateur quelconque de la classe ou de la classe dérivée, mais comme un membre
public pour la classe dérivée.
D’autre part, il existe trois sortes de dérivation :
publique – les membres de la classe de base conservent leur statut dans la classe
dérivée ; c’est la situation la plus usuelle ;
privée – tous les membres de la classe de base deviennent privés dans la classe
dérivée ;
protégée (depuis la version 3) – les membres publics de la classe de base
deviennent membres protégés de la classe dérivée ; les autres membres conservent
leur statut.
Lorsqu’un membre (donnée ou fonction) est redéfini dans une classe dérivée, il reste
toujours possible (soit dans les fonctions membre de cette classe, soit pour un client de
cette classe) d’accéder aux membres de même nom de la classe de base ; il suffit pour
cela d’utiliser l’opérateur de résolution de portée (::), sous réserve, bien sûr, qu’un tel
accès soit autorisé.
241
Le concept d’héritage constitue l’un des fondements de la Programmation Orientée
Objet. Il permet de définir une nouvelle classe B dite « dérivée », à partir d’une classe
existante A, dite « de base » ; pour ce faire, on procède ainsi :
class B : public A // ou : private A ou (depuis la version 3) protected A
{ // définition des membres supplémentaires (données ou fonctions)
// ou redéfinition de membres existants dans A (données ou fonctions)
} ;
Avec public A, on parle de « dérivation publique » ; avec private A, on parle de
« dérivation privée » ; avec protected A, on parle de « dérivation protégée ».
Modalités d’accès à la classe de base
Les membres privés d’une classe de base ne sont jamais accessibles aux fonctions
membre de sa classe dérivée.
Outre les « statuts » public ou privé (présentés au chapitre 3), il existe un statut
« protégé ». Un membre protégé se comporte comme un membre privé pour un
utilisateur quelconque de la classe ou de la classe dérivée, mais comme un membre
public pour la classe dérivée.
D’autre part, il existe trois sortes de dérivation :
publique – les membres de la classe de base conservent leur statut dans la classe
dérivée ; c’est la situation la plus usuelle ;
privée – tous les membres de la classe de base deviennent privés dans la classe
dérivée ;
protégée (depuis la version 3) – les membres publics de la classe de base
deviennent membres protégés de la classe dérivée ; les autres membres conservent
leur statut.
Lorsqu’un membre (donnée ou fonction) est redéfini dans une classe dérivée, il reste
toujours possible (soit dans les fonctions membre de cette classe, soit pour un client de
cette classe) d’accéder aux membres de même nom de la classe de base ; il suffit pour
cela d’utiliser l’opérateur de résolution de portée (::), sous réserve, bien sûr, qu’un tel
accès soit autorisé.
241
