Co je přetížení metody?
Přetížení metod je funkce ve většině objektově orientovaných programovacích jazyků, ve kterých dvě nebo více metod sdílejí stejný název, ale mají odlišné parametry. Konkrétně se počet, typ dat a / nebo pořadí parametrů liší. Při kompilaci kódu bude automaticky vybrána správná metoda podle toho, jak se volá. Metody jsou také známé jako funkce v některých programovacích jazycích, takže přetížení metod je někdy označováno jako přetížení funkcí.
Jednoduchým příkladem přetížení metody by byla metoda, která počítá plochu čtverce. Může být definován jako getArea (čtverečky). Tato metoda by mohla být přetížena pro dodatečný výpočet plochy kruhu přidáním metody getArea (Kruh c).
Primárním požadavkem na přetížení metody je to, že metody sdílejí stejný název. Jejich podpisy metod - název metody, počet parametrů a datové typy parametrů - by jinak měly být jedinečné. Tímto způsobem může kompilátor určit, kterou metodu provést.
Konstruktory, metody používané k vytvoření instance objektů, jsou často přetížené. To se provádí k inicializaci objektu s nestandardními hodnotami. Například objekt zaměstnance se dvěma poli (jméno a datum narození nebo dob) může mít následující přetížené konstruktory: Employee (), Employee (name) a Employee (name, dob). První konstruktor vytvoří zaměstnanecký objekt s prázdným názvem a dobovými poli. Druhý nastaví pole pro název, ale ponechá pole dob prázdné, a třetí definuje pole názvu i dob.
Přetížení metody se nejčastěji provádí tak, aby více než jedna metoda vypadala logicky jako jediná metoda. V příkladu getArea (), i když existují fyzicky dvě metody, je volajícímu prezentována jediná logická metoda getArea (). Tímto způsobem lze getArea () rozšířit o další tvary - trojúhelníky, lichoběžníky atd. - a přitom se logicky prezentovat jako jediná metoda.
Metody jsou také přetíženy, aby byla zachována zpětná kompatibilita. Metoda, která provádí složitý výpočet, by mohla mít nový požadavek na volitelný provedení stejného výpočtu s malou změnou. Do metody je přidán nový parametr, který určí, jak provést výpočet - starý nebo nový způsob.
Aby se zabránilo nutnosti najít všechny případy, ve kterých je metoda volána, a přidat nový parametr, může být metoda přetížena. Nová metoda bude mít starý podpis a bude volána existujícím kódem. Samotná nebude obsahovat žádnou logiku a jednoduše zavolá modifikovanou metodu a předá nový parametr „staré cestě“. Nový kód zavolá upravenou metodu a předá nový parametr s odpovídající hodnotou, starou nebo novou cestou.
Přetížení metody je druh polymorfismu, ve kterém stejná logická metoda může být v praxi použita několika způsoby. Přetížení metody není stejné jako přepisování metody. Přepsání metody je místo, kde je definice metody v nadřazené třídě změněna podřízenou třídou. V takovém případě budou mít obě metody stejný podpis.