Rozdiel Medzi Prepísaním A Preťažením

Rozdiel Medzi Prepísaním A Preťažením
Rozdiel Medzi Prepísaním A Preťažením

Video: Rozdiel Medzi Prepísaním A Preťažením

Video: Rozdiel Medzi Prepísaním A Preťažením
Video: OOP 3 - Overriding a Overloading prepísanie, preťaženie 2024, November
Anonim

Prekonanie vs Preťaženie

Metóda Overriding a method Overloading sú dva koncepty / techniky / funkcie, ktoré sa nachádzajú v niektorých programovacích jazykoch. Oba koncepty umožňujú programátorovi poskytnúť rôzne implementácie pre metódy 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, ktorá je už definovaná v jej super triede. Preťaženie metód umožňuje programátorovi poskytovať rôzne implementácie do viacerých metód s rovnakým názvom (v rámci rovnakej triedy).

Čo je to prvoradé?

Ako bolo uvedené vyššie, trieda môže v objektovo orientovaných programovacích jazykoch rozšíriť super triedu alebo nadradenú triedu. Podradená trieda môže mať svoje vlastné metódy alebo môže voliteľne mať svoje vlastné implementácie do metód už definovaných v jej nadradenej triede (alebo v jednej z jej tried nadradeného rodiča). Keď teda dôjde k druhému, nazýva sa to prepísanie metódy. Inými slovami, ak podradená trieda poskytuje implementáciu metóde s rovnakým typom podpisu a návratu ako metóda už definovaná v jednej z jej nadradených tried, hovorí sa, že táto metóda je prepísaná (nahradená) implementáciou podradenej triedy.. Takže ak v triede existuje prepísaná metóda, bude sa musieť runtime systém rozhodnúť, ktorá implementácia metódy sa použije. Tento problém je vyriešený pohľadom na presný typ 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, použije sa implementácia podradenej triedy. Moderné programovacie jazyky ako Java, Eifell, C ++ a Python umožňujú prepísanie metódy.

Čo je to preťaženie?

Preťaženie metódy 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 sú 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 návratovým typom (alebo oboma). Napríklad, ak máte method1 (typ1 t1) a method1 (typ2 t2) vo vnútri tej istej triedy, sú preťažené. Potom bude systém musieť rozhodnúť, ktorý z nich sa má po vyvolaní vykonať. Táto diferenciácia sa robí sledovaním typu parametrov, ktoré boli odovzdané metóde. Ak je argument typu 1, potom sa volá prvá implementácia, zatiaľ čo ak je typu 2, volá sa druhá implementácia.

Aký je rozdiel medzi prepísaním a preťažením?

Aj keď sa na poskytnutie metódy s rôznymi implementáciami používa prepísanie metódy a preťaženie metódy, medzi týmito dvoma konceptmi / technikami existujú kľúčové rozdiely. V prvom rade predmety prepísania metódy vždy zostávajú v rôznych triedach, zatiaľ čo subjekty preťaženia metódy zostávajú v tej istej triede. To znamená, že prepísanie 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 neobjektovom jazyku. Inými slovami, prepíšete metódu v super triede, ale preťažíte metódu vo svojej vlastnej triede.

Ďalším rozdielom je, že prepísané metódy majú rovnaký názov metódy, podpis metódy a návratový typ, ale preťažené metódy sa musia líšiť buď v podpisovom, alebo v návratovom type (názov by mal byť rovnaký). Na rozlíšenie dvoch prepísaných metód sa použije presný typ objektu, ktorý sa použije na vyvolanie použitej metódy id, zatiaľ čo na rozlíšenie dvoch preťažených metód sa použijú typy parametrov. Ďalším kľúčovým rozdielom je, že preťaženie je vyriešené v čase kompilácie, zatiaľ čo prepísanie je vyriešené za behu.

Odporúčaná: