C# Language Un autre exemple de polymorphisme


Exemple

Le polymorphisme est l'un des piliers de la POO. Poly dérive d'un terme grec qui signifie «formes multiples».

Vous trouverez ci-dessous un exemple montrant le polymorphisme. La classe Vehicle prend plusieurs formes en tant que classe de base.

Les classes dérivées Ducati et Lamborghini héritent de Vehicle et remplacent la méthode Display() la classe de base pour afficher ses propres NumberOfWheels .

public class Vehicle
{
    protected int NumberOfWheels { get; set; } = 0;
    public Vehicle()
    {
    }

    public virtual void Display()
    {
        Console.WriteLine($"The number of wheels for the {nameof(Vehicle)} is {NumberOfWheels}");
    }
}

public class Ducati : Vehicle
{
    public Ducati()
    {
        NoOfWheels = 2;
    }

    public override void Display()
    {
        Console.WriteLine($"The number of wheels for the {nameof(Ducati)} is {NumberOfWheels}");
    }
}

public class Lamborghini : Vehicle
{
    public Lamborghini()
    {
        NoOfWheels = 4;
    }

    public override void Display()
    {
        Console.WriteLine($"The number of wheels for the {nameof(Lamborghini)} is {NumberOfWheels}");
    }
}

Voici l'extrait de code où Polymorphism est exposé. L'objet est créé pour le type de base Vehicle utilisant un vehicle variable sur la ligne 1. Il appelle la méthode de la classe de base Display() sur la ligne 2 et affiche la sortie comme indiqué.

 static void Main(string[] args)
 {
    Vehicle vehicle = new Vehicle();    //Line 1
    vehicle.Display();                  //Line 2  
    vehicle = new Ducati();             //Line 3
    vehicle.Display();                  //Line 4
    vehicle = new Lamborghini();        //Line 5
    vehicle.Display();                  //Line 6
 }

À la ligne 3, l’objet vehicle pointe vers la classe dérivée Ducati et appelle sa méthode Display() , qui affiche la sortie comme indiqué. Voici le comportement polymorphique, même si l'objet vehicle est de type de Vehicle , il appelle la méthode de la classe dérivée d' Display() comme le type Ducati remplace la classe de base d' Display() méthode, puisque le vehicle objet est pointé vers Ducati .

La même explication est applicable lorsqu'elle appelle la méthode Display() du type Lamborghini .

La sortie est indiquée ci-dessous

The number of wheels for the Vehicle is 0        // Line 2 
The number of wheels for the Ducati is 2         // Line 4
The number of wheels for the Lamborghini is 4    // Line 6