Menu
Coddy logo textTech

Syntaxe de base de l'héritage (:)

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

L'héritage permet à une classe d'acquérir les propriétés et les méthodes d'une autre classe. Au lieu de réécrire le même code, vous créez une classe de base (parent) avec des fonctionnalités partagées, puis vous créez des classes dérivées (enfants) qui en héritent.

En C#, vous utilisez le symbole deux-points : pour indiquer l'héritage :

public class Animal
{
    public string Name { get; set; }
    
    public void Eat()
    {
        Console.WriteLine($"{Name} is eating.");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine($"{Name} says Woof!");
    }
}

La classe Dog hérite de tout ce qui provient de Animal. Elle a accès à la propriété Name et à la méthode Eat() sans avoir à les déclarer à nouveau, de plus, elle ajoute sa propre méthode Bark() :

Dog myDog = new Dog();
myDog.Name = "Buddy";
myDog.Eat();   // Sortie : Buddy mange.
myDog.Bark();  // Sortie : Buddy dit Woof !

C# ne prend en charge que l'héritage simple, ce qui signifie qu'une classe ne peut hériter que d'une seule classe de base. Cependant, vous pouvez construire des chaînes d'héritage où une classe dérivée devient la base d'une autre classe. Cela crée une hiérarchie qui modélise les relations du monde réel tout en gardant votre code organisé et réutilisable.

challenge icon

Défi

Facile

Construisons une hiérarchie de véhicules qui démontre comment l'héritage permet aux classes dérivées de partager les fonctionnalités d'une classe de base tout en ajoutant leurs propres comportements uniques.

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

  • Vehicle.cs : Définissez une classe Vehicle dans l'espace de noms Transport. Ce sera votre classe de base que tous les véhicules partagent. Elle doit avoir une propriété Brand (string) et une propriété Year (int), ainsi qu'une méthode StartEngine() qui affiche "{Brand} engine started."
  • Car.cs : Définissez une classe Car dans l'espace de noms Transport qui hérite de Vehicle. La voiture ajoute sa propre propriété NumberOfDoors (int) et une méthode Honk() qui affiche "{Brand} goes Beep Beep!"
  • Program.cs : Dans votre fichier principal, créez une instance de Car en utilisant les valeurs d'entrée. Définissez ses propriétés (y compris celles héritées), puis démontrez que la voiture peut utiliser à la fois ses propres méthodes et les méthodes qu'elle a héritées de Vehicle.

Vous recevrez trois entrées :

  • Nom de la marque (Brand)
  • Année (Year)
  • Nombre de portes (Number of doors)

Affichez les informations de la voiture et démontrez ses capacités dans ce format :

Car: {Brand} ({Year})
Doors: {NumberOfDoors}
{StartEngine output}
{Honk output}

Par exemple, si les entrées sont Toyota, 2022, et 4, la sortie devrait être :

Car: Toyota (2022)
Doors: 4
Toyota engine started.
Toyota goes Beep Beep!

Remarquez comment votre Car peut accéder à la propriété Brand et à la méthode StartEngine() même si elles sont définies dans Vehicle. C'est le pouvoir de l'héritage - la classe dérivée obtient automatiquement tout de sa classe de base !

Aide-mémoire

L'héritage permet à une classe d'acquérir les propriétés et les méthodes d'une autre classe en utilisant le symbole deux-points : :

public class Animal
{
    public string Name { get; set; }
    
    public void Eat()
    {
        Console.WriteLine($"{Name} is eating.");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine($"{Name} says Woof!");
    }
}

La classe dérivée (Dog) hérite de toutes les propriétés et méthodes de la classe de base (Animal) et peut ajouter les siennes :

Dog myDog = new Dog();
myDog.Name = "Buddy";
myDog.Eat();   // Méthode héritée
myDog.Bark();  // Sa propre méthode

Le C# ne prend en charge que l'héritage simple - une classe ne peut hériter que d'une seule classe de base. Cependant, vous pouvez créer des chaînes d'héritage pour construire des hiérarchies.

Essayez vous-même

using System;
using Transport;

class Program
{
    public static void Main(string[] args)
    {
        // Lire l'entrée
        string brand = Console.ReadLine();
        int year = Convert.ToInt32(Console.ReadLine());
        int doors = Convert.ToInt32(Console.ReadLine());
        
        // TODO: Créer une instance de Car
        
        // TODO: Définir les propriétés de la voiture (Brand, Year, NumberOfDoors)
        
        // TODO: Afficher les informations de la voiture au format requis :
        // Car: {Brand} ({Year})
        // Doors: {NumberOfDoors}
        // Ensuite, appeler StartEngine() et Honk()
    }
}
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