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.