Co to je polymorfismus?
Polymorfismus je jeden ze základních principů OOP [1]. Umožňuje přistupovat k objektům různých tříd jednotným způsobem skrze jejich společnou rodičovskou třídu. Hlavní myšlenkou polymorfismu je, že objekty mohou mít mnoho forem, ale navenek se tváří stejně – v souladu s principy efektivního návrhu kódu nemusíme v programu zjišťovat konkrétní typ objektu, abychom provedli určitou akci [2]. Místo toho zavoláme metodu definovanou v rodičovské třídě a systém automaticky zajistí spuštění té správné verze metody, kterou si definoval konkrétní potomek [1].
V jazyce C# a na platformě .NET [3] se polymorfismus nejčastěji projevuje přiřazením instance potomka do proměnné typu rodiče. Zápis Rodic obj = new Potomek(); říká kompilátoru: "Zacházej s tímto objektem jako s obecným rodičem, ale pokud zavoláme přepsanou metodu, použij při běhu programu skutečné chování potomka" [3].
Přetěžování metod (Method Overloading)
Další formou polymorfismu je přetěžování metod [1]. To nám umožňuje definovat v jedné třídě více metod se stejným názvem, které se však liší počtem nebo typem parametrů. Funguje to na principu rozpoznání parametrů již při kompilaci [3]. Typickým příkladem může být metoda Hledat. Můžeme mít jednu verzi Hledat(int id) pro vyhledávání podle čísla a druhou verzi Hledat(string jmeno) pro vyhledávání podle textu. Ačkoliv mají obě metody stejný název, kompilátor podle toho, zda do závorky vložíme číslo nebo text, přesně ví, kterou variantu má použít [1].