Héritage (Partie 1)
Introduction
- L’héritage est un nouveau moyen de faire intéragir les classes entre elles par le biais de relations dites hiérarchiques
Introduction
- Une classe
Bqui hérite d’une classeAa accès à tous les membres et méthodes deA
- Ainsi, la classe
Best basée sur la classeAmais peut également ajouter de nouveaux membres ainsi que de nouvelles méthodes propres à sa fonction :- la classe
Aque l’on appellera classe mère ou de base est une généralisation deB, - la classe
Bque l’on dit dérivée ou classe fille deAest donc spécialisation deA.
- la classe
Notions d’héritage simple
class polygone { protected: unsigned int m_nombre_segment; }; class rectangle : public polygone { public: void set_largeur(const double largeur_); private: double m_longueur; double m_largeur; };
- La relation d’héritage est matérialisée par l’usage de la directive
public polygone
- Le mot-clé
protectedautorise la classe dérivée (icirectangle) à accéder aux membres de la classe de base (icipolygone)
Statut des membres et méthodes de classe
private- les membres ne sont accessibles qu’aux méthodes et aux fonctions amies de la classe
protected- les membres sont accessibles aux méthodes de la classe de base
ainsi qu’aux classes dérivées. Ils demeurent toutefois
inaccessibles à l’utilisateur de la classe contrairement au
statut
public public- les membres sont accessibles non seulement aux méthodes mais également à l’utilisateur de la classe c’est-à-dire à n’importe quel objet/instance du type de la classe
Appels des constructeurs et destructeurs
class polygone { public: polygone(const unsigned int nbr_segment_); protected: unsigned int m_nombre_segment; }; class rectangle : public polygone { public: rectangle(const double longueur_, const double largeur_); private: double m_longueur; double m_largeur; };
Appels des constructeurs et destructeurs
polygone::polygone(const unsigned int nbr_segment_) : m_nombre_segment(nbr_segment_) { }
rectangle::rectangle(const double longueur_, const double largeur_) : polygone(4), m_longueur(longueur_), m_largeur(largeur_) { }
Appels des constructeurs et destructeurs
- À la construction d’une classe fille, le constructeur de la classe mère est appelé avant toutes autres opérations
- Lors de la destruction d’une classe fille, le destructeur de la classe de base est appelé automatiquement après le destructeur de la classe fille