Menu
Coddy logo textTech

Le mot-clé 'base'

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy. Leçon 20 sur 70.

Lorsqu'une classe dérivée hérite d'une classe de base, vous avez souvent besoin d'accéder directement aux membres du parent. Le mot-clé base fournit cette connexion, vous permettant d'appeler le constructeur de la classe de base ou d'accéder à ses méthodes et propriétés.

L'utilisation la plus courante de base est d'appeler le constructeur de la classe parente. Lors de la création d'un objet dérivé, vous pouvez transmettre des valeurs à la classe de base :

public class Animal
{
    public string Name { get; set; }
    
    public Animal(string name)
    {
        Name = name;
    }
}

public class Dog : Animal
{
    public string Breed { get; set; }
    
    public Dog(string name, string breed) : base(name)
    {
        Breed = breed;
    }
}

La syntaxe : base(name) appelle le constructeur Animal avant que le corps du constructeur Dog ne s'exécute. Cela garantit que la classe de base est correctement initialisée en premier.

Vous pouvez également utiliser base pour appeler des méthodes parentes à partir de la classe dérivée :

public class Animal
{
    public void Speak()
    {
        Console.WriteLine("Animal sound");
    }
}

public class Dog : Animal
{
    public void Speak()
    {
        base.Speak();  // Appelle la méthode Speak de Animal
        Console.WriteLine("Woof!");
    }
}

Ici, base.Speak() appelle explicitement la version parente de la méthode. C'est utile lorsque vous souhaitez étendre le comportement du parent plutôt que de le remplacer complètement.

challenge icon

Défi

Facile

Construisons un système d’inventaire de produits qui montre comment les classes dérivées utilisent le mot-clé base pour initialiser correctement leur classe parente et étendre le comportement hérité.

Vous allez créer trois fichiers pour organiser votre code :

  • Product.cs : définissez une classe Product dans l’espace de noms Inventory. Cette classe de base représente n’importe quel produit avec une propriété Name (string) et une propriété Price (decimal). Incluez un constructeur qui accepte les deux valeurs ainsi qu’une méthode GetInfo() qui renvoie "{Name}: ${Price}".
  • ElectronicProduct.cs : définissez une classe ElectronicProduct dans l’espace de noms Inventory qui hérite de Product. Cette classe ajoute une propriété WarrantyMonths (int). Le constructeur doit accepter le nom, le prix et le nombre de mois de garantie — utilisez base pour transmettre le nom et le prix au constructeur parent. Créez une méthode GetInfo() qui appelle d’abord la méthode GetInfo() de la classe parente à l’aide de base, puis ajoute " (Warranty: {WarrantyMonths} months)" pour étendre le résultat.
  • Program.cs : dans votre fichier principal, créez un ElectronicProduct à partir des valeurs saisies et affichez ses informations complètes en appelant GetInfo().

Vous recevrez trois entrées :

  • Nom du produit
  • Prix
  • Nombre de mois de garantie

Affichez le résultat de l’appel à GetInfo() sur votre produit électronique.

Par exemple, si les entrées sont Laptop, 999.99 et 24, la sortie doit être :

Laptop: $999.99 (Warranty: 24 months)

Remarquez comment la classe dérivée s’appuie sur le résultat de la classe de base au lieu de dupliquer la logique. Le mot-clé base vous permet de réutiliser et d’étendre facilement le comportement de la classe parente !

Essayez vous-même

using System;
using Inventory;

class Program
{
    public static void Main(string[] args)
    {
        // Lire les entrées
        string name = Console.ReadLine();
        decimal price = Convert.ToDecimal(Console.ReadLine());
        int warrantyMonths = Convert.ToInt32(Console.ReadLine());

        // TODO: Créer un ElectronicProduct avec les valeurs d'entrée
        
        // TODO: Afficher le résultat de l'appel à GetInfo() sur votre produit électronique
        
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C# en ligne