Sobes.tech
Junior — Middle

Spiega il concetto di metodi virtuali nel linguaggio C# e il loro ruolo nell'implementazione del polimorfismo.

sobes.tech AI

Risposta dell'AI

In C#, i metodi virtuali sono metodi dichiarati con la parola chiave virtual, che possono essere sovrascritti nelle classi derivate usando override. Questa è la base per l'implementazione del polimorfismo — la capacità di chiamare metodi di classi derivate tramite riferimenti alla classe base.

Quando un metodo è dichiarato virtuale, la chiamata al metodo viene determinata in fase di esecuzione (binding dinamico), non in fase di compilazione. Questo permette a un oggetto di comportarsi in modo diverso a seconda del suo tipo reale.

Esempio:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("L'animale emette un suono");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("Bau bau");
    }
}

Animal a = new Dog();
a.Speak(); // Stampa "Bau bau"

Qui, anche se la variabile a ha tipo Animal, viene chiamato il metodo sovrascritto Speak() della classe Dog grazie al metodo virtuale.