Rozdiel medzi preťažením verzus prvoradý

Predtým, ako sa ponoríme hlboko do rozdielov medzi preťažením verzus prekonaním, musíme pochopiť, čo v skutočnosti sú, a scenáre, v ktorých sa používajú obzvlášť? Nováčci v Jave sa medzi nimi často zamieňajú, sú však od seba úplne odlišní a používajú sa v konkrétnych scenároch. Preťaženie metód je, keď máme viacero metód s rovnakým menom, ale s rôznymi podpismi. Podpisy zahŕňajú počet parametrov metódy, typ údajov parametrov. Spôsob vrátenia nie je súčasťou podpisu. Toto sa vykonáva kvôli zaisteniu funkčnosti opakovaného použitia rovnakého názvu metódy a zvýšeniu čitateľnosti programov. Metóda Prepísanie nastane v prípade dedičstva, v ktorom odvodená trieda zdedí vlastnosti od základnej triedy. Zahŕňa definovanie rovnakej metódy základnej triedy v odvodenej triede s rovnakým parametrom a návratovým typom, aby sa definovala akákoľvek špecifická funkčnosť / implementácia tejto metódy v odvodenej triede.

Zoberme si scenár, v ktorom programátor musí nájsť plochu geometrického útvaru. Oblasť každého obrázku sa od seba líši. Napríklad na zistenie plochy štvorca sa vyžaduje iba jeden parameter „strana“, pre obdĺžnik sa požadujú dva parametre „dĺžka a šírka“, zatiaľ čo pre kruh sa vyžaduje polomer, ktorý môže byť desatinný. Na vyriešenie tohto účelu sa vykonáva preťaženie metódy, v ktorej oblasť metódy má rôzne parametre a dátový typ pre oblasť rôznych čísel. Zamyslite sa nad situáciou bankového systému, aj keď sú rôzne metódy a postupy pre všetkých zamestnancov rovnaké, s výnimkou niektorých úrokových sadzieb pre bežných a starších občanov. V tomto prípade sa metóda Overriding používa s rôznymi implementáciami metódy Úrokové sadzby tak v triede Normálny, ako aj Seniori, ktorá zdedila základnú triedu „Bankové sadzby“.

Porovnanie medzi hlavami medzi preťažením verzus prekonaním (infografika)

Nižšie je porovnanie najlepších 7 medzi pretažením verzus potlačenie :

Kľúčové rozdiely medzi preťažením verzus potlačením

Poďme diskutovať o niektorých hlavných kľúčových rozdieloch medzi preťažením verzus prekonaním:

  1. Pri preťažení metódy môžu mať metódy rovnaké alebo rôzne špecifikátory / modifikátory prístupu v názve metódy, zatiaľ čo v metóde Overriding metóda základného prípadu (prepísaná metóda) musí mať špecifikátor obmedzeného prístupu ako metóda nadradenej triedy. Napríklad, ak je metóda základnej triedy chránená, potom nie je povolená súkromná metóda.
  2. Pri porovnaní z hľadiska výkonu má preťaženie lepší výkon v porovnaní s Overridingom, pretože preťaženie metód sa vykonáva v čase kompilácie.
  3. Návratový typ metódy nikdy nie je súčasťou metódy Preťaženie, preto nezáleží na tom, či rôzne preťažené metódy majú rovnaký alebo odlišný typ návratu, zatiaľ čo v metóde Overriding návratový typ musia byť metódy materskej aj základnej triedy presne rovnaké.,
  4. Keď hovoríme o väzbe, preťaženie má statickú väzbu, zatiaľ čo funkcia Overriding má dynamickú väzbu.
  5. Výnimka vyvolaná metódou nezáleží na preťaženej metóde, ak jedna metóda vyvoláva výnimku, iné preťažené metódy môžu / nemôžu hádzať tú istú alebo inú výnimku, ale v prípade potlačenia nemôže metóda overriding (metóda v odvodenej triede) vyvolať výnimku vyššej hierarchie ako prepísaná metóda (metóda v základnej triede).
  6. Všetky špecifikátory, ako sú súkromné, konečné a statické, sa nemôžu použiť v prepísaní metód, zatiaľ čo všetky špecifikátory prístupu sú povolené v preťažovaní metód.

Porovnávacia tabuľka preťaženia verzus overriding

V nasledujúcej tabuľke sú zhrnuté porovnania medzi preťažením verzus overriding:

S.No. preťaženie prvoradý
1Preťaženie metód sa vykonáva tak, aby sa zlepšila definícia metód podľa rôznych situácií.Prepísanie metód sa vykonáva s cieľom poskytnúť konkrétnu implementáciu metód definovaných v nadradenej triede.
2Preťaženie metódy sa vykonáva v jednej triede, v ktorej jedna trieda má rôzne definície metódy.Prepísanie metódy sa vykonáva medzi dvoma triedami, ktoré majú medzi sebou vzťah IS-A (dedičnosť).
3Metóda Preťaženie sa vykonáva v čase kompilácie a preto sa nazýva Polymorfizmus kompilácie.Metóda Overriding sa vykonáva za behu a preto je známa ako runtime polymorfizmus.
4Poradie parametrov, typ údajov a počet parametrov sa musia pre preťaženie metódy líšiť.Poradie parametrov, typ údajov a počet musia byť rovnaké pre prepísanie metódy.
5Návratový typ metódy môže byť rovnaký alebo iný v prípade preťaženia metódy. Na tom vôbec nezáleží.V prípade potlačenia metódy musí byť návratový typ metódy rovnaký v rodičovskej aj podradenej triede.
6Statické metódy môžu byť preťažené, tj môžeme mať rôzne statické metódy preťažené v rovnakej triede.Statické metódy nemôžu byť nikdy potlačené, tj statická metóda v rodičovskej triede a základnej triede medzi nimi nemá žiadny vzťah.
7Súkromné ​​a konečné metódy môžu byť preťažené v triede, tj trieda môže preťažiť viac ako 1 súkromné ​​a konečné metódy.Súkromné ​​a konečné metódy nemôžu byť nikdy potlačené v detskej triede.

Príklad preťaženia metódy:

class FIgures(
public int area(int side)
(
return side*side;
)
public int area(int length, int breadth) //method overloading
(
return length*breadth;
)
public static void main(String() args)
(
Figures f = new Figures ();
System.out.println(“Area of Square “+ f.area(10));
System.out.println(“Area of Rectangle “+ f.area(12, 10));
)
)

Výkon:

Rozloha námestia 100
Oblasť obdĺžnika 120

Vo vyššie uvedenom príklade je metóda „area ()“ preťažená a v oboch preťažených metódach má odlišné parametre. Pretože oblasť musí byť zistená pre štvorec aj obdĺžnik, ale s rôznymi parametrami.

Príklad prepísania metódy:

class BankRates( // parent(base) class
void rates()
(
System.out.println(“Rates for normal citizen is 3.5%”);
)
)
class SeniorCItizen extends BankRates( //child class inheriting parent class
void rates() // method overriding
(
System.out.println(“Rates for senior citizens is 4.5%”);
)
)
class Bank(
public static void main(String() args)
(
SeniorCItizen sc = new BankRates(); sc.rates();
)
)

Výkon:

Sadzby pre seniorov sú 4, 5%

Vo vyššie uvedenom príklade je metóda 'rate ()' prepísaná v odvodenej triede 'SeniorCitizen', pretože chceme aj metódy v triede SeniorCitizen, ale s inou implementáciou.

záver

Vyššie uvedené vysvetlenie jasne ukazuje rozdiel medzi preťažením verzus potlačením a konkrétnymi scenármi, v ktorých sa tieto dva používajú. Pred programovaním je potrebné porozumieť týmto základným pojmom Java, pretože tvoria základ mnohých vecí a pomáhajú ľahšiemu porozumeniu pokročilejších konceptov.

Odporúčané články

Toto bol návod na najväčší rozdiel medzi preťažením verzus potlačením. Tu diskutujeme aj o kľúčových rozdieloch Overloading vs Overypiding s informáciami a porovnávacou tabuľkou. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Funkčné programovanie vs OOP
  2. Čo je to prepísanie v jazyku JavaScript?
  3. Ako funguje preťaženie v PHP?
  4. Prehľad preťaženia v C #
  5. Prevláda v Jave
  6. Preťaženie Pythonu
  7. Preťaženie a prekonanie v C #

Kategórie: