virtual - metody w C# i C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

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?

  • virtual nie jest typowym określeniem dla atrybutów/pól klasy,
  • w C# nie stosuje się virtual do 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.