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.