virtual - metody w C# i C++
Słowo kluczowe virtual jest używane w programowaniu obiektowym do oznaczania elementów, które mogą być przesłaniane/nadpisywane w klasach pochodnych. W kontekście egzaminacyjnym najważniejsze jest skojarzenie: virtual dotyczy metod klasy.
virtual w C
W języku C# metoda oznaczona jako virtual może zostać nadpisana w klasie dziedziczącej za pomocą słowa kluczowego override.
class Zwierze
{
public virtual void DajGlos()
{
Console.WriteLine("Dźwięk zwierzęcia");
}
}
class Pies : Zwierze
{
public override void DajGlos()
{
Console.WriteLine("Hau");
}
}
Dzięki temu wywołanie metody może zależeć od rzeczywistego typu obiektu, a nie tylko od typu zmiennej referencyjnej. Jest to mechanizm polimorfizmu.
virtual w C++
W C++ metoda wirtualna również umożliwia dynamiczne wiązanie metod:
class Zwierze {
public:
virtual void dajGlos() {
cout << "Dźwięk zwierzęcia";
}
};
class Pies : public Zwierze {
public:
void dajGlos() override {
cout << "Hau";
}
};
Na co uważać na egzaminie?
virtualnie jest typowym określeniem dla atrybutów/pól klasy,- w C# nie stosuje się
virtualdo destruktorów, - funkcje zaprzyjaźnione w C++ (
friend) nie są metodami klasy, więc nie są wirtualne, - najbezpieczniejsza odpowiedź egzaminacyjna: metody klasy.
Zapamiętaj
virtual oznacza, że metoda klasy może zachowywać się inaczej w klasach pochodnych dzięki nadpisywaniu.