Zpo-1-wyk-Slajd13

Z Studia Informatyczne
Wersja z dnia 06:24, 21 sie 2006 autorstwa Bwalter (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Polimorfizm

Polimorfizm


Polimorfizm to mechanizm umożliwiający współistnienie różnych metod, które mogą zostać wykonane w odpowiedzi na komunikat odebrany przez obiekt, przy czym wybór metody dokonywany jest dynamicznie, na podstawie typu obiektu odbiorcy. Polimorfizm pozwala zatem traktować odbiorcę komunikatu w sposób abstrakcyjny, bez znajomości jego typu, ponieważ metoda polimorficzna zostanie wybrana automatycznie, bez wiedzy wywołującego ją obiektu.

W języku Java istnieją trzy mechanizmy polimorficzne. Pierwszym jest dziedziczenie, które umożliwia polimorficzne pokrywanie metod. Mechanizm ten jest obecny we wszystkich współczesnych językach obiektowych. W Javie wszystkie metody są dziedziczone polimorficznie, natomiast w C++ metody takie muszą zostać zadeklarowane jako wirtualne.

Drugim mechanizmem są interfejsy i możliwość ich implementacji w klasach. Interfejsy są w języku Java substytutem obecnego w C++ mechanizmu wielokrotnego dziedziczenia. W porównaniu z nim interfejsy są jednak bezpieczniejszym rozwiązaniem, ponieważ służą jedynie do przekazania zewnętrznego kontraktu klasy (jej typu), natomiast nie umożliwiają współdzielenia implementacji.

Ostatnim mechanizmem jest polimorfizm parametryczny, obecny w Javie w postaci tzw. typów generycznych. Pozwala on tworzyć szablony klas, w których niektóre kontrakty (typy) są przekazywane jako parametry klasy. Dzięki temu możliwe jest stworzenie nieograniczonej rodziny klas, o podobnej strukturze, ale różnych kontraktach.


<< Poprzedni slajd | Spis treści | Następny slajd >>