Sobes.tech
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, благодарение на виртуалния метод.