Aller au contenu

L'héritage

Définition

L’héritage est un pilier de la programmation orientée objet, qui permet de factoriser dans une classe de base, des membres communs à un ensemble de classes qui dérivent de cette classe. En C#, l’héritage multiple n’est pas autorisé : une classe ne peut dériver que d’une seule autre classe. Toute classe a une classe de base, excepté la classe System.Object. Si aucune classe de base n’est précisée, alors cette dernière est la classe de base.

Processus permettant de créer un arbre d'héritage

Lors de la conception, deux processus permettent de mettre en œuvre l’héritage. Et même si ces processus correspondent à des démarches différentes, ils peuvent mener au même arbre d’héritage :

  • La spécialisation, qui consiste à éclater les membres d’une classe (de base) dans des classes dérivées, en laissant les membres communs dans la classe de base et en déplaçant les membres spécifiques dans les classes dérivées.

  • La généralisation, qui consiste, à partir de classes dérivées, à factoriser un ensemble de membres communs dans une classe de base, en laissant dans les classes dérivées les membres qui leur sont propres.

Exemple d'arbre d'héritage

Voici un exemple d’héritage :

Exemple d'héritage de classes

Un beignet et un donut sont des gâteaux que nous pouvons créer. En matière de conception, la classe Gateau joue un rôle technique, qui consiste à factoriser des membres communs à ces deux classes.

Pour illustrer l'implémentation de l'héritage, voici la classe Donut, qui dérive de la classe Gateau :

public class Donut : Gateau
{
    public double DiametreInterne { get; set; }

    public Donut(double diametreExterne, double diametreInterne, Pate pate)
        : base(diametreExterne, pate)
    {
        DiametreInterne = diametreInterne;
    }

    public override void Frire()
    {
        // Cuisson spécifique du donut
    }

    public void Napper()
    {
        // Nappage du donut
    }
}

Lors de la déclaration de la classe, nous indiquons qu'elle dérive de la classe de base Gateau avec le symbole " : ". Le constructeur de cette classe appelle le constructeur de la classe de base en lui fournissant les paramètres attendus. Le constructeur de la classe de base est exécuté en premier, avant la première instruction du constructeur de la classe Donut.

Ainsi, la classe Donut bénéficie des membres accessibles de la classe Gateau et ajoute ses membres spécifiques aux donuts.