Junior — Middle
Обяснете концепцията за виртуални методи в езика C# и тяхната роля в реализирането на полиморфизма.
sobes.tech AI
Отговор от AI
В C# виртуалните методи са методи, обявени с ключовата дума virtual, които могат да бъдат презаписани в наследени класове с помощта на override. Това е основата за реализиране на полиморфизъм — възможността да се извикват методи на наследени класове чрез препратки към базовия клас.
Когато метод е обявен за виртуален, извикването на метода се определя по време на изпълнение (динамично свързване), а не по време на компилация. Това позволява обектът да се държи по различен начин в зависимост от реалния си тип.
Пример:
class Animal {
public virtual void Speak() {
Console.WriteLine("Животното издава звук");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("Га-га");
}
}
Animal a = new Dog();
a.Speak(); // Ще изведе "Га-га"
Тук, въпреки че променливата a има тип Animal, се извиква презаписаният метод Speak() на класа Dog, благодарение на виртуалния метод.