Sobes.tech
Junior — Middle

Wyjaśnij koncepcję metod wirtualnych w języku C# i ich rolę w implementacji polimorfizmu.

sobes.tech AI

Odpowiedź od AI

W C# metody wirtualne to metody zadeklarowane słowem kluczowym virtual, które mogą być nadpisywane w klasach pochodnych za pomocą override. To podstawa implementacji polimorfizmu — możliwości wywoływania metod klas pochodnych przez odwołania do klasy bazowej.

Gdy metoda jest zadeklarowana jako wirtualna, wywołanie metody jest ustalane podczas wykonywania (dynamiczne wiązanie), a nie podczas kompilacji. Pozwala to obiektowi zachowywać się różnie w zależności od jego rzeczywistego typu.

Przykład:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("Zwierzę wydaje dźwięk");
    }
}

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

Animal a = new Dog();
a.Speak(); // Wypisze "Hau hau"

Tutaj, mimo że zmienna a ma typ Animal, wywoływana jest nadpisana metoda Speak() klasy Dog dzięki metodzie wirtualnej.