Przejdź do głównej treści
  1. Strona główna
  2. Słownik
  3. INF.04
  4. Polimorfizm

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 ten sam komunikat, wywołanie metody lub operacja może zachowywać się różnie w zależności od typu obiektu, na którym zostanie wykonana.

W praktyce pozwala pisać kod ogólny, który działa na obiektach różnych klas, o ile mają one wspólny interfejs, klasę bazową albo metodę o tej samej nazwie.

Przykład idei

Załóżmy, że istnieją klasy Pies i Kot, które mają metodę dajGlos().

class Zwierze {
    void dajGlos() {
        System.out.println("Dźwięk zwierzęcia");
    }
}

class Pies extends Zwierze {
    void dajGlos() {
        System.out.println("Hau");
    }
}

class Kot extends Zwierze {
    void dajGlos() {
        System.out.println("Miau");
    }
}

Wywołanie dajGlos() może dać inny efekt w zależności od tego, czy obiektem jest pies, czy kot. To właśnie polimorfizm.

Znaczenie polimorfizmu

Polimorfizm:

  • umożliwia używanie jednej metody w różnych klasach,
  • ułatwia rozszerzanie programu bez przepisywania istniejącego kodu,
  • wspiera dziedziczenie i interfejsy,
  • pozwala traktować różne obiekty w jednolity sposób,
  • zwiększa elastyczność i czytelność kodu.

Polimorfizm a inne pojęcia OOP

Polimorfizmu nie należy mylić z:

  • hermetyzacją - ukrywaniem szczegółów implementacji i ograniczaniem dostępu do pól,
  • dziedziczeniem - przejmowaniem cech klasy bazowej,
  • tworzeniem obiektów - instancjonowaniem klas.

W pytaniach egzaminacyjnych poprawna definicja polimorfizmu zwykle brzmi: jedna metoda może działać różnie w zależności od klasy lub typu obiektu.