Maître de Conférences en Informatique à l'Université d'Angers
Ce site est en cours de reconstruction certains liens peuvent ne pas fonctionner ou certaines images peuvent ne pas s'afficher.
L'héritage permet la réutilisabilité du code et produit des classes spécialisées ou généralistes.
class Fille : [virtual] public/protected/private Classe_Mère {
...
};
On utilise l'héritage quand on peut dire qu'une classe B est une classe A avec certaines propriétés en plus ou avec certaines restrictions.
B est appelée classe Fille et A est appelée la classe Mère

Par exemple :
Exemple : on crée une classe Person, puis une classe Student qui hérite de Person car Student est une Person inscrite dans une formation (level).
La classe Student n'a pas besoin de redéfinir les getters/setters de la classe mère Person.
En terme d'interface, on a donc :
Note : on a fait figurer en rouge dans la partie ci-dessus ce qui devrait être ajouté ou modifié afin d'aboutir à une meilleure conception des classes.
L'héritage multiple correspond au cas où une classe B hérite de plusieurs autres classes A_1, ..., A_n.
Un problème survient lorsqu'une classe hérite deux fois de la même classe mère par le biais de deux classes filles : c'est le cas de l'héritage en diamant :
On utilise le mot clé virtual pour éviter d'hériter deux fois des champs de Personne :
Dans la classe Doctorant, le constructeur doit appeler le constructeur de Personne, puis les constructeurs des classes Etudiant et Enseignant. Cependant le constructeur de Personne ne sera appelé qu'une seule fois.
L'opérateur dynamic_cast permet de transformer un pointeur sur un objet dans une hierarchie de classes. Si la conversion est impossible alors dynamic_cast retournera NULL.

p = 0x15e1050
q = 0