Cześć, może kotś mi rozjaśnić czym jest owe zagadnienie, dopiero uczę się obiektowego, klasy, dziedziczenia zrozumiałem bez problemu, z tym mam kłopot.
Najbardziej łopatologicznie to:
- Masz klasę Figura posiadającą metodę polePowierzchni()
- Masz klasę Trójkąt dziedziczącą po Figura
- Masz klasę Kwadrat dziedziczącą po Figura
- Masz np. tablicę obiektów klasy Figura, do której wstawiasz (uwaga !) obiekty klas Trójkąt i Kwadrat
- Potem iterujesz sobie po kolejnych elementach tej tablicy i wywołujesz metodę polePowierzchni() -> zostanie ona wywołana dla obiektów Trójkąt/Kwadrat w zależności od tego, jaki obiekt jest pod danym indeksem tablicy (żeby tak się stało, to polePowierzchni() musi być metodą wirtualną -> doczytaj)
Więc polimorfizm to tego typu zachowania obiektów ;) Ale to bardzo uproszczone podejście ;)
Dam inny przykład: Mamy wskaźnik na człowieka, każdy człowiek ma metodę szukajInforamcji(string temat). Teraz są dwie klasy pochodne informatyk i leń.
Każda z tych klas implementuje tę metodę inaczej.
Informatyk szuka kolejno w źródłach: książka/podręcznik/dokumentacja, google, forum.
leń natomiast stosuje w najlepszym wypadku stosuje odwrotną kolejność, ale zwykle ogranicza się jedynie do forum.
Mając wskaźnik na człowieka, nie muszę wiedzieć, z kim mam do czynienia, posługując się poszczególnymi metodami, można nim swobodnie manipulować (to jest właśnie polimorfizm).
W praktyce jednak zwykle wiadomo z jaką klasą człowieka ma się do czynienia.
@MarekR22 - +20 :>
Ja bym to ujął inaczej:
Polimorfizm to możliwość stosowania tego samego kodu dla obiektów różnych typów. Czyli jeśli mam jakiś reużywalny kod (czyli z reguły funkcję) która działa jednocześnie dla danych typu A i danych typu B, to nie muszę mieć wskaźnika, nie muszę pisać w C++, nie muszę nawet używać języka obiektowego a z polimorfii i tak korzystam.