Dynamický výběr

Dynamický výběr, angl. dynamic dispatch, je v programování metoda výběru polymorfní operace (metody nebo funkce), která se má za běhu zavolat. Dynamický výběr je v protikladu ke statickému výběru (static dispatch), při kterém je implementace (viz) polymorfní operace vybrána v průběhu kompilace. Účel dynamického výběru je podporovat ty případy, kdy nelze určit příslušnou implementaci polymorfní operace staticky kompilátorem, protože závisí na dynamickém (tj. běhovém) typu jednoho nebo více parametrů.

Podobná implementační technika je pozdní vazba, late binding.

Dynamický výběr se často používá v objektově-orientovaných jazycích, když různé třídy obsahují různé implementace stejné metody díky dědičnosti. Například předpokládejme, že dvě třídy B a C dědí metodu foo() z A. Když x je proměnná typu A. Za běhu může x obsahovat hodnotu typu B nebo C kromě A a obecně tento konkrétní typ nelze určit při kompilaci.

Při statickém výběru volání metody x.foo() bude vždy odkazovat na implementaci foo() ze třídy A, protože statický výběr určuje implementaci podle deklarovaného typu objektu. Při dynamickém výběru bude zjištěn typ hodnoty v proměnné x za běhu a zavolá se implementace foo(), která je asociovaná s konkrétním typem uložené hodnoty, ať je to A , B nebo C.

V tomto článku byl použit překlad textu z článku Dynamic dispatch na anglické Wikipedii.