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.