Polymorfizmus
Polymorfizmus
– v programování znamená, že proměnná a hodnota může patřit do více než jednoho typu
Existují dva druhy polymorfizmu
– univerzální polymorfické funkce pracují s nekonečným počtem typů
– Ad – hoc polymorfické funkce pracují pouze s konečným počtem relativně nepříbuzných typů
Univerzální polymorfizmus může být
– parametrický – funkce má jako parametr(y) typ, podle kterého určuje typy ostatních parametrů a svoje chování; v praxi se používá spíše v podobě template, která se vyhodnocují již v době překladu
– inkluzívní – objekt může patřit do více typů, které jsou uspořádané podle inkluze; hojně využívané v OOP – objekt podtřídy se může objevit všude tam, kde je vyžadován objekt některé z jeho nadtříd
Univerzální inkluzívní polymorfizmus navíc rozlišuje reference
– dynamické – momentální reference typu, který je v běhu programu používán
– statické – které jsou dané v čase kompilace deklarací typu
Ad – hoc polymorfizmus může existovat jako
– překrývání – stejné jméno funkce se použije na označení různých funkcí, které se liší pouze typem či počtem parametrů; vhodná funkce se při překladu vybere podle typu a počtu parametrů; prakticky se jedná o práci preprocesoru, který pro každou takovouto funkci použije jiný symbol, takže se jedná pouze o záležitost syntaktickou, ale o tom jindy…
– přetypovávání – naopak vyžaduje sémantickou operaci konverze parametrů na typ, který vyžaduje použitá funkce
Dynamické vázání
– zobrazení symbolických jmen do jejich definice až v době běhu programu; v případě statického vázání se zobrazení vykoná již v době překladu
V OOP souvisí dynamické vázání s inkluzívním polymorfizmem.
V některých OOPJ se požaduje, aby se funkce, u kterých má probíhat dynamické vázání, označovali symbolem (např. virtual).