Forskellen mellem overbelastning vs overordnet

Før vi dykker dybt ned i forskellene mellem Overbelastning vs Overriding, er vi nødt til at forstå, hvad de faktisk er, og scenarierne, hvor de er specielt anvendt? Newbies i Java bliver ofte forvirrede mellem de to, men de er helt forskellige fra hinanden og bruges i deres specifikke scenarier. Overbelastning af metoder er, når vi har flere metoder med samme navn, men forskellige underskrifter. Signaturer inkluderer antallet af metodeparametre, datatypen for parametre. Metodens returtype er ikke inkluderet i underskriften. Dette gøres for at tilvejebringe funktionaliteten ved at genbruge det samme metodenavn og øge læsbarheden af ​​programmer. Metodeoverskridelse sker i tilfælde af arv, hvorafledt klasse arver egenskaberne fra baseklassen. Det involverer at definere den samme metode til baseklasse i en afledt klasse med den samme parameter og returtype for at definere enhver specifik funktionalitet / implementering af denne metode i den afledte klasse.

Overvej et scenario, hvor en programmør har brug for at finde området for en geometrisk figur. Området for hver figur varierer fra hinanden. For at finde kvadratområdet er der kun krævet en enkelt parameter 'side', for rektangel kræves der to parametre 'længde og bredde', medens for cirkel kræves radius, der kan være decimal. For at løse dette formål udføres overbelastning, hvor metodeområdet har forskellige parametre og datatype for et område med forskellige figurer. Tænk på banksystemets situation, skønt flere metoder og procedurer for alle ansatte er ens bortset fra nogle lignende renter for normale og ældre er forskellige. I dette tilfælde bruges metodeoverskridelse med forskellige implementeringer af metodens rentesatser i både Normal- og Ældre-klassen, der arver grundklassen 'Bankrenter'.

Sammenligning mellem hovedet og hovedet mellem overbelastning og overdreven (Infografik)

Nedenfor er Top 7-sammenligningen mellem overbelastning kontra overdreven :

Vigtige forskelle mellem overbelastning vs overbestyring

Lad os diskutere nogle af de vigtigste nøgleforskelle mellem Overbelastning vs Overriding:

  1. Ved overbelastning af metoder kan metoder have de samme eller forskellige adgangsspecifikatorer / modifikatorer i metodenavnet, mens metoden Overstyringsmetode i basistilfælde (overstyret metode) skal have begrænset adgangsspecifikator end metoden i en overordnet klasse. For eksempel, hvis metoden i en baseklasse er beskyttet, er den underordnede metode ikke tilladt.
  2. Når der sammenlignes med hensyn til ydeevne, har overbelastning bedre ydeevne som en sammenligning med Overriding, fordi overbelastning af metoden udføres på sammenstillingstidspunktet.
  3. Returtypen for en metode er aldrig en del af metoden Overbelastning, og derfor betyder det ikke noget, om forskellige overbelastede metoder har den samme eller forskellige returtype, mens i Metode Overriding return type af både metoderne for forældre og baseklasse skal være nøjagtig den samme .
  4. Når man taler om binding, har Overbelastning statisk binding, mens Overriding har dynamisk binding.
  5. Undtagelse kastet efter metode betyder ikke noget i den overbelastede metode, hvis en metode kaster undtagelse andre overbelastede metoder kan / kan ikke kaste den samme eller forskellige undtagelse, men i tilfælde af Overriding kan Overriding-metode (metode i afledt klasse) ikke kaste undtagelse af højere hierarki end den tilsidesatte metode (metode i baseklasse).
  6. Alle specifikationer som private, endelige og statiske kan ikke bruges i metodeoverskridelse, mens alle adgangsspecifikationerne er tilladt i metodeoverbelastning.

Sammenligningstabel over overbelastning versus overstyring

Tabellen nedenfor opsummerer sammenligningerne mellem Overbelastning vs Overriding:

S.No. overbelastning Overstyring
1Overbelastning af metoden udføres for at få en forbedret definition af metoder i henhold til forskellige situationer.Fremgangsmådeoverskridelse udføres for at give en specifik implementering af metoder, der er defineret i forældreklassen.
2Metode Overbelastning udføres i en enkelt klasse, hvor en klasse har forskellige definitioner af en metode.Metodeoverskridelse udføres mellem to klasser, der har et IS-A-forhold (arv) mellem dem.
3Metode Overbelastning udføres på kompileringstidspunktet, og det er derfor kendt som Compile time Polymorphism.Fremgangsmådeoverskridelse udføres ved kørselstidspunkt, og det er derfor kendt som runtime Polymorphism.
4Parameterbestilling, datatype og parametertælling skal være forskellige for metodeoverbelastning.Parameterbestilling, datatype og tælling skal være de samme for metodeoverskridelse.
5Returtypen for en metode kan være den samme eller forskellige i tilfælde af metodeoverbelastning. Det betyder ikke noget overhovedet.Returtypen for en metode skal være den samme i både forældre- og børneklasse i tilfælde af metodeoverskridelse.
6Statiske metoder kan overbelastes, dvs. vi kan have forskellige statiske metoder overbelastet i samme klasse.Statiske metoder kan aldrig tilsidesættes, dvs. statisk metode i en forældreklasse og baseklasse har ingen relation derimellem.
7Private og endelige metoder kan overbelastes i en klasse, dvs. en klasse kan have overbelastet mere end 1 private og afsluttende metoder.Private og endelige metoder kan aldrig tilsidesættes i en barneklasse.

Eksempel på overbelastning af metode:

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));
)
)

Produktion:

Område af firkant 100
Område med rektangel 120

I ovenstående eksempel er metoden 'område ()' overbelastet og har forskellige parametre i begge overbelastede metoder. Da området skal finde ud af både firkanten og rektanglet, men med forskellige parametre.

Eksempel på metodeoverskridelse:

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();
)
)

Produktion:

Priser for ældre er 4, 5%

I ovenstående eksempel tilsidesættes metode 'satser ()' i den afledte klasse 'SeniorCitizen', fordi vi også ønsker metodepriserne i klassen SeniorCitizen, men med en anden implementering.

Konklusion

Ovenstående forklaring viser klart forskellen mellem Overbelastning vs Overriding og de specifikke scenarier, hvor disse to bruges. Før programmering skal man forstå disse kernekoncepter af Java, da de danner grundlaget for mange ting og hjælper med let at forstå mere avancerede koncepter.

Anbefalede artikler

Dette har været en guide til den største forskel mellem Overbelastning vs Overriding. Her diskuterer vi også overbelastning vs tilsidesættelse af vigtige forskelle med infografik og sammenligningstabel. Du kan også se på de følgende artikler for at lære mere -

  1. Funktionel programmering vs OOP
  2. Hvad overstyrer i JavaScript?
  3. Hvordan fungerer overbelastning i PHP?
  4. Oversigt over overbelastning i C #
  5. Overstyring i Java
  6. Python-overbelastning
  7. Overbelastning og tilsidesættelse i C #

Kategori: