Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Polimorfizm - wytłumaczenie
Proxxx
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 9.10.2011

Ostrzeżenie: (0%)
-----


Witam,

Otóż czytam poradniki, przeglądam książki i nie mogę znaleźć dobrego wytłumaczenia idei i działania polimorfizmu. Czy może ktoś podrzucić jak najprostszy przykład i go opisać? Czym polimorfizm różni się od dziedziczenia czy implementowania interfejsu po prostu?

I czy ten kod: http://wklejto.pl/106402 , wykorzystuje polimorfizm?

Pozdrawiam,
Łukasz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Owszem mike, masz rację. To z przeciążaniem metod jest pewnym wariantem polimorfizmu, a nie jego sendem, ale chciałem tak na "chłopski rozum" wytłumaczyć czym on między innymi jest, bez wskakiwania w coś mocno abstrakcyjnego. Przedstawiony przeze mnie prosty przykład jest w oparciu o wiedzę z C/C++, gdzie przeciążanie jest mechanizmem polimorficznym. Widać to zwłaszcza w przypadku przeciążania operatorów. Ogólnie można powiedzieć, że najłatwiej polimorfizm wychwytuje się w językach statycznie typowanych, gdzie nawet rzutowanie jest przecież mechanizmem polimorficznym. Wiem... Można to uznać za teoretyzowanie, ale chyba przykład z rzutowaniem będzie budził mniej Twoich kontrowersji (IMG:style_emoticons/default/smile.gif) W końcu masz to o co Ci chodziło: obiekt jest jednocześnie różnego typu, zależnie od kontekstu użycia.

Gdyby tak się przyjrzeć to polimorfizm zależnie od swego "typu" można implementować w zasadzie jako klasy abstrakcyjne z ich pochodnymi lub interfejsy po których dziedziczymy i tym samym wymuszamy posiadanie tych samych funkcji, właściwości, do których zależnie od kontokstu można się odwoływać i wtedy jest to faktycznie polimorfizm na poziomie obiektu. Zwróć jednak uwagę, że nie jest to w przypadku php wygodne z prostego powodu: dynamiczne rzutowanie i konieczność jawnego odwoływania do przodków jeśli metoda jest nadpisana w potomku. W statycznie typowanych "sam sobie" po przodkach szuka pasujących do wywołania o ile nie może dokonać pewnych konwersji (choćby pomiędzy double, float i int).
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 22:51