Převažující vs přetížení
Metoda Overriding a metoda Overloading jsou v některých programovacích jazycích dva koncepty / techniky / funkce. Oba koncepty umožňují programátorům poskytovat různé implementace pro metody se stejným názvem. Přepsání metody umožňuje programátorovi poskytnout alternativní implementaci v rámci podtřídy k metodě již definované v její nadřazené třídě. Přetížení metod umožňuje programátorům poskytovat různé implementace pro více metod se stejným názvem (ve stejné třídě).
Co je prvořadé?
Jak je uvedeno výše, třída může rozšířit super třídu nebo nadřazenou třídu v objektově orientovaných programovacích jazycích. Podřízená třída může mít své vlastní metody, nebo může mít své vlastní implementace do metod již definovaných ve své nadřazené třídě (nebo jedné z jejích nadřazených tříd). Když se tak stane, nazývá se to převažující metoda. Jinými slovy, pokud podřízená třída poskytuje implementaci metody se stejným typem podpisu a návratu jako metoda již definovaná v jedné z jejích nadřazených tříd, říká se, že tato metoda byla implementací podřízené třídy přepsána (nahrazena). . Pokud tedy ve třídě existuje přepsaná metoda, bude se runtime systém muset rozhodnout, kterou implementaci metody použije. Tento problém je vyřešen při pohledu na přesný typ objektu, který se používá k vyvolání. Pokud se k vyvolání přepsané metody použije objekt nadřazené třídy, použije se implementace v nadřazené třídě. Podobně, pokud se používá objekt podřízené třídy, použije se implementace podřízené třídy. Moderní programovací jazyky jako Java, Eifell, C ++ a Python umožňují přepsání metod.
Co je přetížení?
Přetížení metody je funkce poskytovaná některými programovacími jazyky k vytvoření více než jedné metody se stejným názvem, ale s různými typy vstupu a výstupu. V moderních programovacích jazycích jako Java, C #, C ++ a VB.NET je tato funkce k dispozici. Metodu můžete přetížit vytvořením jiné metody se stejným názvem, ale s jiným podpisem metody nebo jiným typem návratu (nebo obojím). Například pokud máte ve stejné třídě metody1 (typ1 t1) a metoda1 (typ2 t2), jsou přetíženy. Pak se systém bude muset rozhodnout, který z nich se má spustit, když se volá. Toto rozlišení se provádí na základě posouzení typu parametru (parametrů) předaných do metody. Pokud je argument typu 1, pak se vyvolá první implementace, zatímco pokud je typu 2, pak se nazývá druhá implementace.
Jaký je rozdíl mezi Overriding a Overloading?
Přestože jsou metody overriding a overloading metody použity k poskytnutí metody s různými implementacemi, existují mezi těmito dvěma koncepty / technikami klíčové rozdíly. Za prvé, předměty převažující metody vždy zůstávají v různých třídách, zatímco subjekty přetížení metody zůstávají ve stejné třídě. To znamená, že potlačení je možné pouze v objektově orientovaných programovacích jazycích, které umožňují dědičnost, zatímco přetížení může být k dispozici také v objektově orientovaném jazyce. Jinými slovy, přepíšete metodu v super třídě, ale přetížíte metodu v rámci své vlastní třídy.
Další rozdíl spočívá v tom, že přepsané metody mají stejný název metody, podpis metody a návratový typ, ale přetížené metody se musí lišit v podpisovém nebo návratovém typu (název by měl být stejný). Aby bylo možné rozlišit mezi dvěma přepsanými metodami, použije se přesný typ objektu, který se používá k vyvolání ID metod, zatímco pro rozlišení mezi dvěma přetíženými metodami se používají typy parametrů. Dalším klíčovým rozdílem je to, že přetížení je vyřešeno v době kompilace, zatímco potlačení je vyřešeno za běhu.