Co to jest polimorfizm?

0

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.

2

Najbardziej łopatologicznie to:

  1. Masz klasę Figura posiadającą metodę polePowierzchni()
  2. Masz klasę Trójkąt dziedziczącą po Figura
  3. Masz klasę Kwadrat dziedziczącą po Figura
  4. Masz np. tablicę obiektów klasy Figura, do której wstawiasz (uwaga !) obiekty klas Trójkąt i Kwadrat
  5. 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 ;)

12

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.

1

@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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1