2. Sommaire
1. Définition et intérêt
2. Syntaxe et exemple
3. Constructeurs et héritage
4. Redéfinition de méthodes
5. Redéfinition avec réutilisation
3. Définition et intérêt
• Définition
L’héritage est une technique permettant la création d’une
classe à partir d’une autre en partageant ses attributs et
méthodes
• Intérêt
– Spécialisation ou enrichissement : une nouvelle classe
réutilise les membres (publiques ou protégés) d’une classe
en y ajoutant des membres particuliers
– Généralisation ou factorisation : réunir des classes
possédant des caractéristiques communes dans une
nouvelle classe plus générale
4. Syntaxe et exemple
• Syntaxe
class NomClasseFille : [protection] NomClasseMere{
// Déclaration des nouveaux attributs
// Déclaration des nouvelles méthodes
// Redéfinition de méthodes
...
};
• Le type de protection de la classe mère est public, protected
ou private (par défaut). En général public est choisi.
• Exemple (Un rectangle coloré est un rectangle)
class RectangleCol : public Rectangle{
public:
int couleur;
...
};
5. Constructeurs et héritage
• Construire un objet B d’une classe dérivée, nécessite d’abord
de construire un objet A de sa classe de base puis de le
compléter par ce qui est spécifique à B.
• Le constructeur de la classe de base est donc appelé avant le
constructeur de la classe dérivée.
• Si la classe de base a un constructeur autre que celui par
défaut, la classe dérivée doit nécessairement avoir un
constructeur explicite.
• Syntaxe du constructeur d’une sous classe
NomClasseFille(<parametres>)
: NomClasseMere(<arguments>),
<attribut1>(<valeur1>),
...
<attributn>(<valeurn>)
{
// autres opérations
}
6. Redéfinition de méthodes
• Une sous-classe peut redéfinir les méthodes héritées et
fournir des implémentations spécifiques pour celles-ci
• La redéfinition d’une méthode cache le code de la méthode
héritée
• L’accès à une méthode est aussi redéfinissable dans une sous-classe
pourvu que la directive soit identique ou plus large
• Exemple
– Une voiture électrique est une voiture dont l’opération de
démarrage est différente
– On démarre une voiture électrique en activant un
disjoncteur
7. Redéfinition avec réutilisation
• Le code d’une méthode redéfinie fait souvent appel à la
méthode de la classe mère à l’aide de l’opérateur de résolution
de portée.
• Syntaxe
NomDeLaClasseMere::nomDeLaMethode ([arguments])