Prekrývanie verzus preťaženie
Metóda Overriding a Method Overloading sú dva koncepty / techniky / funkcie, ktoré sa nachádzajú v niektorých programovacích jazykoch. Obidva koncepty umožňujú programátorovi poskytovať rôzne implementácie metód s rovnakým názvom. Prepísanie metódy umožňuje programátorovi poskytnúť alternatívnu implementáciu v rámci podtriedy k metóde už definovanej v rámci jej nadtriedy. Preťaženie metód umožňuje programátorovi poskytovať rôzne implementácie viacerých metód s rovnakým názvom (v rámci rovnakej triedy)..
Čo je prvoradé?
Ako je uvedené vyššie, trieda môže v objektovo orientovaných programovacích jazykoch rozšíriť nadtriedu alebo nadradenú triedu. Podriadená trieda môže mať svoje vlastné metódy alebo môže mať voliteľne svoje vlastné implementácie metód už definovaných vo svojej nadradenej triede (alebo jednej z jej veľkých rodičovských tried). Keď sa tak stane, nazýva sa to metóda prevažujúca. Inými slovami, ak podriadená trieda poskytuje implementáciu metódy s rovnakým typom podpisu a návratu ako metóda už definovaná v jednej z jej nadradených tried, uvádza sa, že táto metóda je nahradená implementáciou podradenej triedy. , Takže ak existuje v triede prepísaná metóda, runtime systém bude musieť rozhodnúť, ktorá implementácia metódy sa použije. Tento problém je vyriešený preskúmaním presného typu objektu, ktorý sa používa na jeho vyvolanie. Ak sa na vyvolanie prepísanej metódy použije objekt nadradenej triedy, použije sa implementácia v nadradenej triede. Podobne, ak sa používa objekt podradenej triedy, potom sa použije implementácia podradenej triedy. Moderné programovacie jazyky ako Java, Eifell, C ++ a Python umožňujú prepísanie metód.
Čo je preťaženie?
Preťaženie metód je funkcia poskytovaná niektorými programovacími jazykmi na vytvorenie viac ako jednej metódy s rovnakým názvom, ale s rôznymi typmi vstupu a výstupu. V moderných programovacích jazykoch ako Java, C #, C ++ a VB.NET je táto funkcia k dispozícii. Metódu môžete preťažiť vytvorením inej metódy s rovnakým názvom, ale s iným podpisom metódy alebo iným typom návratu (alebo oboma). Napríklad, ak máte v rovnakej triede method1 (type1 t1) a method1 (type2 t2), potom sú preťažené. Potom bude systém musieť rozhodnúť, ktorý z nich sa má spustiť, keď sa volá. Toto rozlíšenie sa robí pri pohľade na typ parametra (-ov), ktorý sa preniesol do metódy. Ak je argument typu 1, potom sa volá prvá implementácia, zatiaľ čo ak je typu 2, potom sa volá druhá implementácia.
Aký je rozdiel medzi prvkami Overload a Overloading?
Aj keď sa metóda overriding a overloading metódy používajú na zabezpečenie metódy s rôznymi implementáciami, medzi týmito dvoma koncepciami / technikami existujú kľúčové rozdiely. Predovšetkým subjekty, ktoré používajú metódu overovania, vždy zostávajú v rámci rôznych tried, zatiaľ čo subjekty, ktoré preťažujú metódy, zostávajú v rámci tej istej triedy. To znamená, že potlačenie je možné iba v objektovo orientovaných programovacích jazykoch, ktoré umožňujú dedenie, zatiaľ čo preťaženie môže byť k dispozícii aj v objektovo neorientovanom jazyku. Inými slovami, prepíšete metódu v super triede, ale preťažíte metódu v rámci svojej vlastnej triedy.
Ďalším rozdielom je to, že prepísané metódy majú rovnaký názov metódy, podpis metódy a typ návratu, ale preťažené metódy sa musia líšiť v podpisovom aj návratovom type (názov by mal byť rovnaký). Na rozlíšenie medzi dvoma prekrývanými metódami sa používa presný typ objektu, ktorý sa používa na vyvolanie id metódy, zatiaľ čo na rozlíšenie medzi dvoma preťaženými metódami sa používajú typy parametrov. Ďalším kľúčovým rozdielom je to, že preťaženie je vyriešené v čase kompilácie, zatiaľ čo potlačenie je vyriešené za behu.