Sobes.tech
Junior — Middle

Vysvětlete koncept virtuálních metod v jazyce C# a jejich roli při implementaci polymorfismu.

sobes.tech AI

Odpověď od AI

V C# jsou virtuální metody, které jsou deklarovány klíčovým slovem virtual a mohou být přepsány v odvozených třídách pomocí override. To je základ pro implementaci polymorfismu — schopnosti volat metody odvozených tříd přes odkazy na základní třídu.

Když je metoda deklarována jako virtuální, je volání této metody určeno za běhu (dynamické vázání), nikoli při kompilaci. To umožňuje, aby se objekt choval odlišně v závislosti na svém skutečném typu.

Příklad:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("Zvíře vydává zvuk");
    }
}

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

Animal a = new Dog();
a.Speak(); // Vypíše "Haf haf"

Zde, i když má proměnná a typ Animal, volá se přepsaná metoda Speak() třídy Dog, díky virtuální metodě.