Czym jest polimorfizm?
Polimorfizm to cecha programowania obiektowego, która pozwala traktować różne obiekty w jednolity sposób, a jednocześnie wykonywać ich własne wersje metod.
Nazwa pochodzi od greckich słów oznaczających „wiele form”. W praktyce oznacza to, że ta sama metoda może zachowywać się inaczej w zależności od typu obiektu.
Przykład zastosowania
Załóżmy, że istnieje klasa bazowa Figura oraz klasy pochodne Kolo i Prostokat. Każda figura może mieć metodę obliczPole(), ale sposób obliczenia pola zależy od konkretnej figury.
class Figura {
public:
virtual double obliczPole() = 0;
};
class Kolo : public Figura {
public:
double obliczPole() override {
return 3.14 * 5 * 5;
}
};
Dzięki polimorfizmowi można przechowywać różne figury np. w jednej kolekcji i wywoływać na nich tę samą metodę obliczPole().
Związek z metodami wirtualnymi
W C++ polimorfizm dynamiczny uzyskuje się najczęściej przez:
- dziedziczenie,
- metody wirtualne,
- przesłanianie metod w klasach pochodnych,
- wywołania przez wskaźnik lub referencję do klasy bazowej.
Dlaczego polimorfizm jest ważny?
Polimorfizm ułatwia rozbudowę programu. Można dodać nową klasę pochodną bez zmieniania kodu, który korzysta z klasy bazowej.
Najważniejsze na egzamin
Metody wirtualne są jednym z podstawowych mechanizmów realizacji polimorfizmu. Umożliwiają wybranie właściwej wersji metody w czasie działania programu.