Dziedziczenie w C++

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

Dziedziczenie to mechanizm programowania obiektowego, w którym jedna klasa przejmuje cechy innej klasy. Klasa, po której dziedziczymy, nazywa się klasą bazową, a klasa dziedzicząca — klasą pochodną.

Składnia

class KlasaBazowa {
public:
    void metoda() {
        cout << "Bazowa";
    }
};

class KlasaPochodna : public KlasaBazowa {
public:
    void innaMetoda() {
        cout << "Pochodna";
    }
};

Zapis:

class KlasaPochodna : public KlasaBazowa

oznacza, że KlasaPochodna dziedziczy publicznie po KlasaBazowa.

Rodzaje dziedziczenia

W C++ można stosować różne poziomy dziedziczenia:

  • public — publiczne elementy klasy bazowej pozostają publiczne w klasie pochodnej,
  • protected — publiczne i chronione elementy klasy bazowej stają się chronione,
  • private — publiczne i chronione elementy klasy bazowej stają się prywatne.

Najczęściej w zadaniach egzaminacyjnych spotyka się dziedziczenie public.

Dziedziczenie a wskaźniki

Obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej:

KlasaBazowa* obiekt = new KlasaPochodna();

Jest to często używane razem z metodami virtual, aby uzyskać polimorfizm, czyli wywołanie metody właściwej dla rzeczywistego typu obiektu.

Przykład z metodą wirtualną

class Bazowa {
public:
    virtual void pokaz() {
        cout << "Bazowa";
    }
};

class Pochodna : public Bazowa {
public:
    void pokaz() {
        cout << "Pochodna";
    }
};

Jeśli metoda w klasie bazowej jest oznaczona jako virtual, to przy wywołaniu przez wskaźnik bazowy zostanie uruchomiona wersja z klasy pochodnej, jeśli taka istnieje.