Polymorfismus je jedním ze základních konceptů objektově orientovaného programování. Na rozdíl od ostatních principů (zapouzdření, dědičnost, abstrakce apod.) se v případě polymorfismu jedná o poměrně komplikovanou záležitost (podívejte se třeba na Wikipedii), ale v podstatě se vše točí kolem jednoho pojmu, kterým je pozdní vazba.
Mým oblíbeným příkladem je zvířecí seznamka: objekt typu
Zvíře
má metodu představSe
, která sama
o sobě nevypisuje nic užitečného (např. „Jsem obecné
zvíře“). Odvozené třídy ale mohou s výhodou tuto metodu
překrýt a vypsat krátké představení sebe sama, např. „Jsem pes
Alík“ nebo „Jsem kočka Micka“. Metoda
PřidejDoSeznamky
pak může díky pozdní vazbě přijímat
obecný typ Zvíře
a spolehnout se, že volání metody
představSe
bude fungovat podle konkrétního zvířete a vypíše
se tedy smysluplná hláška namísto nicneříkajícího „Jsem obecné
zvíře“. Teoreticky řečeno, pozdní vazba (late binding) odkládá
rozhodnutí o konkrétní volané metodě až na dobu běhu, zatímco
brzká vazba (early binding) o volané metodě rozhoduje už při
kompilaci.
před 6 let 17 týdnů
před 6 let 17 týdnů
před 6 let 39 týdnů
před 7 let 1 týden
před 7 let 14 týdnů
před 7 let 22 týdny
před 7 let 24 týdny
před 7 let 27 týdnů
před 7 let 33 týdny
před 7 let 42 týdny