Polimorfizm

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

Co to jest polimorfizm?

Polimorfizm to jedna z podstawowych cech programowania obiektowego. Oznacza, że obiekty różnych klas mogą być traktowane w jednolity sposób, jeśli mają wspólną klasę bazową lub implementują ten sam interfejs.

W praktyce pozwala to wywołać tę samą metodę, np. liczPole(), na różnych figurach geometrycznych, a każda figura obliczy pole według własnego wzoru.

Przykład z figurami

Jeżeli istnieje klasa bazowa Figura, może ona deklarować metodę:

abstract class Figura {
    abstract double liczPole();
}

Klasy pochodne, np. Trojkat, Kwadrat, Trapez, implementują tę metodę po swojemu:

class Kwadrat extends Figura {
    double bok;

    double liczPole() {
        return bok * bok;
    }
}

Dzięki polimorfizmowi można przechowywać różne figury w jednej kolekcji:

List<Figura> figury = new ArrayList<>();

i dla każdej wywołać:

figura.liczPole();

Dlaczego metoda jest deklarowana w klasie bazowej?

Jeżeli każda figura ma mieć metodę obliczania pola, jej deklaracja powinna znaleźć się w najbardziej ogólnej klasie, czyli Figura. Klasy szczegółowe dziedziczą ten obowiązek i definiują własny sposób obliczania pola.

Najważniejsze cechy

  • wspólny interfejs dla różnych klas,
  • możliwość wywoływania tej samej metody na różnych obiektach,
  • często używany razem z dziedziczeniem i metodami abstrakcyjnymi,
  • ułatwia rozbudowę programu o nowe klasy.