Egzamin zawodowyPortal części pisemnej

INF.04 · pytanie 510

Które z poniższych twierdzeń najlepiej charakteryzuje metodę wirtualną?

  1. AMetoda, która może być przesłonięta w klasie dziedziczącejPoprawna
  2. BMetoda, która jest zawsze stosowana w konstruktorach danej klasy
  3. CMetoda, która działa wyłącznie dla statycznych pól danej klasy
  4. DMetoda, która może być wywoływana tylko przez klasę nadrzędną

Wyjaśnienie

Wirtualna metoda to taka, która jest zdefiniowana w klasie bazowej i można ją nadpisać w klasie pochodnej. Fajna sprawa z tą metodą wirtualną jest taka, że działa na zasadzie dynamicznego wiązania, co w praktyce oznacza, że program decyduje w czasie działania, którą wersję metody wywołać. Dzięki temu mamy polimorfizm – możemy użyć różnych wersji tej samej metody, w zależności od typu obiektu, na którym pracujemy. To naprawdę ważny aspekt programowania obiektowego, bo pozwala na większą elastyczność i łatwiejsze rozwijanie kodu. W hierarchiach klas to się sprawdza, bo klasa bazowa ma ogólne metody, a klasy pochodne mogą je dostosować do swoich potrzeb.