Rozdíl mezi přetížením vs převažením

Než se ponoříme hluboko do rozdílů mezi přetížením vs převisem, musíme pochopit, co ve skutečnosti jsou, a scénáře, ve kterých jsou zvláště používány? Nováčci v Javě se mezi nimi často zaměňují, ale jsou od sebe naprosto odlišní a používají se ve svých specifických scénářích. Přetížení metod je, když máme více metod se stejným názvem, ale různými podpisy. Podpisy zahrnují počet parametrů metody, datový typ parametrů. Návratový typ metody není součástí podpisu. To se provádí za účelem zajištění funkčnosti opakovaného použití stejného názvu metody a zvýšení čitelnosti programů. Metoda Overriding nastane v případě dědičnosti, kdy odvozená třída dědí vlastnosti od základní třídy. Zahrnuje definování stejné metody základní třídy ve odvozené třídě se stejným parametrem a typem návratu, aby se definovala jakákoli specifická funkčnost / implementace této metody ve odvozené třídě.

Zvažte scénář, ve kterém programátor potřebuje najít oblast geometrického útvaru. Oblast každého obrázku se od sebe liší. Například pro nalezení plochy čtverce je vyžadován pouze jeden parametr „strana“, pro obdélník jsou vyžadovány dva parametry „délka a šířka“, zatímco pro kruh je vyžadován poloměr, který může být desetinný. K vyřešení tohoto účelu se provádí přetížení metody, ve kterém oblast metody má různé parametry a datový typ pro oblast různých čísel. Přemýšlejte o situaci bankovního systému, i když více metod a postupů pro všechny zaměstnance je stejné, s výjimkou některých podobných úrokových sazeb pro běžné a seniory se liší. V tomto případě se používá metoda Overriding, která má různé implementace metody Úrokové sazby jak ve třídě Normální, tak Starší občané zděděné základní třídou „Bankovní sazby“.

Srovnání hlava-hlava mezi přetížením vs převisem (infografika)

Níže je uvedeno srovnání nejlepších 7 mezi přetížením vs potlačením :

Klíčové rozdíly mezi přetížením a přepisem

Pojďme diskutovat o některých hlavních klíčových rozdílech mezi přetížením a přebitím:

  1. Při přetížení metody mohou mít metody stejné nebo odlišné specifikátory / modifikátory přístupu v názvu metody, zatímco v metodě Přepisování metody základního případu (přepsaná metoda) musí mít specifikátor omezeného přístupu než metoda nadřazené třídy. Pokud je například metoda základní třídy chráněna, potom není povolena podřízená metoda soukromá.
  2. Ve srovnání s výkonem má přetížení lepší výkon ve srovnání s Overridingem, protože přetížení metody se provádí v době kompilace.
  3. Návratový typ metody není nikdy součástí metody Přetížení, takže nezáleží na tom, zda různé přetížené metody mají stejný nebo odlišný typ návratu, zatímco v metodě Přepisující návratový typ obou metod rodičovské i základní třídy musí být přesně stejný. .
  4. Když mluvíme o vázání, přetížení má statickou vazbu, zatímco potlačení má dynamickou vazbu.
  5. Výjimka vyvolaná metodou nezáleží na přetížené metodě, pokud jedna metoda vyvolá výjimku, jiné přetížené metody mohou / nemohou hodit stejnou nebo odlišnou výjimku, ale v případě potlačení nemůže metoda overriding (metoda ve odvozené třídě) vyvolat výjimku vyšší hierarchie než přepsaná metoda (metoda v základní třídě).
  6. Všechny specifikátory, jako jsou soukromé, konečné a statické, nelze použít v přepisování metod, zatímco všechna specifikátory přístupu jsou povolena v přetížení metod.

Srovnávací tabulka přetížení vs Overriding

Níže uvedená tabulka shrnuje srovnání mezi přetížením a přepisem:

S.No. Přetížení Převažující
1Přetížení metod se provádí za účelem lepší definice metod podle různých situací.Přepisování metod se provádí za účelem poskytnutí konkrétní implementace metod definovaných v nadřazené třídě.
2Přetížení metody se provádí v jedné třídě, ve které jedna třída má různé definice metody.Metoda Overriding se provádí mezi dvěma třídami, které mají mezi sebou vztah IS-A (dědičnost).
3Metoda Přetížení se provádí v době kompilace, a proto se nazývá Polymorfismus kompilace.Metoda Overriding se provádí za běhu, a proto se nazývá běhový polymorfismus.
4Pořadí parametrů, typ dat a počet parametrů musí být různé pro přetížení metody.Pořadí parametrů, typ dat a počet musí být stejné pro přepsání metody.
5Návratový typ metody může být stejný nebo odlišný v případě přetížení metody. Na tom vůbec nezáleží.Návratový typ metody musí být stejný v rodičovské i podřízené třídě v případě přepsání metody.
6Statické metody mohou být přetíženy, tj. Můžeme mít různé statické metody přetížené ve stejné třídě.Statické metody nelze nikdy přepsat, tj. Statická metoda v nadřazené třídě a základní třídě mezi nimi nemá žádný vztah.
7Soukromé a konečné metody mohou být ve třídě přetíženy, tj. Třída může přetížit více než 1 soukromé a konečné metody.Soukromé a konečné metody nemohou být nikdy v dětské třídě přepsány.

Příklad přetížení metody:

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ýstup:

Rozloha náměstí 100
Oblast obdélníku 120

Ve výše uvedeném příkladu je metoda 'area ()' přetížena a má odlišné parametry v obou přetížených metodách. Vzhledem k tomu, oblast potřebuje zjistit jak pro čtverec, tak pro obdélník, ale s různými parametry.

Příklad přepsání metody:

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ýstup:

Sazby pro seniory jsou 4, 5%

Ve výše uvedeném příkladu je metoda 'rate ()' přepsána v odvozené třídě 'SeniorCitizen', protože chceme metody také ve třídě SeniorCitizen, ale s jinou implementací.

Závěr

Výše uvedené vysvětlení jasně ukazuje rozdíl mezi přetížením vs potlačením a konkrétními scénáři, ve kterých jsou tyto dva použity. Před programováním je třeba porozumět těmto základním konceptům Java, protože tvoří základ mnoha věcí a pomáhají snadnému porozumění pokročilejších konceptů.

Doporučené články

To byl průvodce největším rozdílem mezi přetížením a přepisem. Zde diskutujeme také klíčové rozdíly v přetížení versus překonání s infografikou a srovnávací tabulkou. Další informace naleznete také v následujících článcích -

  1. Funkční programování vs OOP
  2. Co je to přepisování v JavaScriptu?
  3. Jak přetížení funguje v PHP?
  4. Přehled přetížení v C #
  5. Převažující v Javě
  6. Přetížení Pythonu
  7. Přetížení a přemostění v C #

Kategorie: