Projet

Général

Profil

Surcharger des méthodes

Remarque préliminaire : dans les classes, de la même façon que les variables membres sont appelés attributs, les fonctions membres sont appelées méthodes.

Dans le cas d'un héritage, une méthode peut être déclarée dans la classe mère :

Cas 1 : la méthode est déclarée (pour appel dans le constructeur par exemple) dans la classe mère mais chaque classe fille aura une implémentation différente.

Classe mère :

La méthode est déclarée dans le fichier En-tête (.h) comme virtuelle pure (ajout de "= 0") à la fin de la déclaration; Elle n'est donc pas implémentée dans le fichier source (.cpp).

Classe fille :

La méthode est redéclarée dans le fichier En-tête (.h) et est implémentée dans le fichier source (.cpp)

Cas 2 : la méthode est déclarée dans la classe mère, mais chaque classe aura une implémentation différente.

Classe mère :

La méthode est déclarée dans le fichier En-tête (.h) comme virtuelle ("tout court") et est implémentée vide dans le fichier source de la classe mère.

Classe fille :

La méthode est redéclarée dans l'En-tête, le fichier source de chaque fille contient le code attendu à l'appel de la méthode pour elle. La surcharge dans les classes filles "écrase" le code éventuellement présent dans le fichier source de la classe mère.

Cas 3 : (C'est le plus courant) La méthode est déclarée dans la classe mère, induira un comportement commun dans les classes filles, mais avec des divergences.

Classe mère :

La méthode est déclarée dans le fichier En-tête (.h) comme virtuelle, son implémentation dans le fichier source de la classe mère contient le comportement "commun" à toutes les classes filles.

Classe fille :

La méthode est redéclarée dans l'En-tête, l'implémentation dans le fichier source commence par l'appel explicite de la méthode de la classe mère, il faut écrire quelque chose du genre "NomClasseMère :: nomMéthode()". On peut rajouter alors dans chaque fille un comportement différent.

Remarque : Selon M.R..., professeur de programmation à l'I.U.T. informatique de Bordeaux 1, la bonne pratique est de redéclarer la méthode "virtuelle" dans l'en-tête des classes filles. Peut être que cette pratique tendrait à laisser penser que cette classe peut être héritée à son tour, et nous ne l'utiliserons donc pas si la classe fille n'est jamais mère (d'autant que ça marche sans !!)

Redmine Appliance - Powered by TurnKey Linux