C# Language Un altro esempio di polimorfismo


Esempio

Il polimorfismo è uno dei pilastri dell'OOP. Poly deriva da un termine greco che significa "forme multiple".

Di seguito è riportato un esempio che mostra Polymorphism. La classe Vehicle assume più forme come classe base.

Le classi derivate Ducati e Lamborghini ereditano da Vehicle e sovrascrivono il metodo Display() della classe base, per visualizzare il proprio 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}");
    }
}

Di seguito è riportato lo snippet di codice in cui viene visualizzato Polymorphism. L'oggetto viene creato per il tipo di base Vehicle utilizza un vehicle variabile sulla linea 1. Chiama il metodo della classe base Display() sulla linea 2 e visualizza l'output come mostrato.

 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
 }

Alla riga 3, l'oggetto vehicle è indirizzato alla classe derivata Ducati e chiama il suo metodo Display() , che visualizza l'uscita come mostrato. Qui viene il polimorfismo, anche se l'oggetto vehicle è di tipo Vehicle , si chiama il metodo classe derivata Display() come tipo Ducati eredita dalla classe base Display() metodo, poiché il vehicle oggetto è puntato verso Ducati .

La stessa spiegazione è applicabile quando richiama il metodo Display() del tipo Lamborghini .

L'uscita è mostrata sotto

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