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.