Forskjellen mellom overbelastning vs overstyring

Før vi dykker dypt ned i forskjellene mellom Overbelastning vs Overriding, må vi forstå hva de faktisk er og scenariene de er spesielt brukt i? Nybegynnere i Java blir ofte forvirret mellom de to, men de er helt forskjellige fra hverandre og brukes i deres spesifikke scenarier. Overbelastning av metoder er når vi har flere metoder med samme navn, men forskjellige signaturer. Signaturer inkluderer antall metodeparametere, datatypen parametere. Returtypen av metoden er ikke inkludert i signaturen. Dette gjøres for å gi funksjonaliteten til å gjenbruke det samme metodenavnet og øke lesbarheten til programmer. Metodeoverskridelse skjer i tilfelle av arv der avledet klasse arver egenskapene fra baseklassen. Det innebærer å definere den samme metoden for baseklasse i en avledet klasse med samme parameter og returtype for å definere hvilken som helst spesifikk funksjonalitet / implementering av den metoden i den avledede klassen.

Tenk på et scenario der en programmerer trenger å finne området til en geometrisk figur. Området til hver figur varierer fra hverandre. For å finne området med kvadratet kreves det for eksempel bare en enkelt parameter 'side', for rektangel kreves det to parametere 'lengde og bredde', mens det for sirkelen kreves radius som kan være desimal. For å løse dette formål utføres overbelastning der metodeområdet har forskjellige parametere og datatype for et område med forskjellige figurer. Tenk på banksystemets situasjon, selv om flere metoder og prosedyrer for alle ansatte er de samme, bortsett fra for noen som rentene for normale og eldre er forskjellige. I dette tilfellet brukes metodeoverskridelse med forskjellige implementeringer av metoden Rentesatser i både Normal og Eldre-klassen som arver grunnklassen 'Banking Rates'.

Sammenligning mellom hodet og hodet mellom overbelastning vs overstyring (Infographics)

Nedenfor er topp 7-sammenligningen mellom overbelastning og overriding :

Viktige forskjeller mellom overbelastning vs overstyring

La oss diskutere noen av de viktigste viktige forskjellene mellom Overbelastning vs Overriding:

  1. Ved overbelastning av metoder kan metoder ha samme eller forskjellige tilgangsspesifikatorer / modifikatorer i metodenavnet, mens metoden Overriding-metoden for base case (overstyret metode) må ha begrenset tilgangsspesifiserer enn metoden til en overordnet klasse. Hvis for eksempel metoden til en baseklasse er beskyttet, er ikke barnemetoden privat tillatt.
  2. Når du sammenligner med tanke på ytelse, har overbelastning bedre ytelse som en sammenligning med Overriding fordi overbelastning av metoden gjøres på sammenstilt tidspunkt.
  3. Returtypen til en metode er aldri en del av metoden Overbelastning. Derfor har det ingen rolle om forskjellige overbelastede metoder har den samme eller forskjellige returtypen, mens i Metoden Overriding returneringstype av både metoden til foreldre og baseklasse må være nøyaktig den samme .
  4. Når vi snakker om binding, har overbelastning statisk binding mens Overriding har dynamisk binding.
  5. Unntak kastet etter metode spiller ingen rolle i den overbelastede metoden hvis en metode kaster unntak andre overbelastede metoder kan / kan ikke kaste det samme eller forskjellige unntak, men i tilfelle av Overriding kan ikke Overriding-metoden (metode i avledet klasse) kaste unntak av høyere hierarki enn den overstyrte metoden (metode i baseklasse).
  6. Alle spesifikasjonene som private, endelige og statiske kan ikke brukes i metodeoverskridelse, mens alle tilgangsspesifikatorene er tillatt i metodens overbelastning.

Sammenligningstabel over overbelastning vs overstyring

Tabellen nedenfor oppsummerer sammenligningene mellom Overbelastning vs Overriding:

S.No. overbelastning Overstyre
1Overbelastning av metoder gjøres for å få en forbedret definisjon av metoder i henhold til forskjellige situasjoner.Overstyring av metode gjøres for å gi en spesifikk implementering av metoder definert i foreldreklassen.
2Metode Overbelastning gjøres i en enkelt klasse der en klasse har forskjellige definisjoner av en metode.Metodeoverskridelse gjøres mellom to klasser som har et IS-A (arv) forhold mellom seg.
3Metode Overbelastning gjøres på kompileringstidspunktet, og derfor er det kjent som Compile time Polymorphism.Metodeoverskridelse gjøres ved kjøretid, og derfor er det kjent som runtime Polymorphism.
4Parameterbestilling, datatype og parametertelling må være forskjellige for metodeoverbelastning.Parameterbestilling, datatype og telling må være den samme for metodeoverskridelse.
5Returtypen til en metode kan være den samme eller forskjellig i tilfelle metodeoverbelastning. Det betyr ikke noe i det hele tatt.Returtypen til en metode må være den samme i både foreldre- og barneklasse i tilfelle metodeoverskridelse.
6Statiske metoder kan overbelastes, det vil si at vi kan ha forskjellige statiske metoder overbelastet i samme klasse.Statiske metoder kan aldri overstyres, dvs. statisk metode i en foreldreklasse og baseklasse har ingen sammenheng mellom dem.
7Private og endelige metoder kan overbelastes i en klasse, dvs. en klasse kan ha overbelastet mer enn 1 private og endelige metoder.Private og endelige metoder kan aldri overstyres i en barneklasse.

Eksempel på overbelastning av 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));
)
)

Produksjon:

Område på kvadrat 100
Område av rektangel 120

I eksemplet over er metoden 'område ()' overbelastet og har forskjellige parametere i begge overbelastede metoder. Som området trenger å finne ut for både firkant og rektangel, men med forskjellige parametere.

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

Produksjon:

Prisene for pensjonister er 4, 5%

I eksemplet ovenfor overstyres metoden 'rater ()' i avledet klasse 'SeniorCitizen' fordi vi ønsker metodeprisen også i klassen SeniorCitizen, men med en annen implementering.

Konklusjon

Ovennevnte forklaring viser tydelig forskjellen mellom Overbelastning vs Overriding og de spesifikke scenariene der disse to brukes. Før programmering må man forstå disse kjernekonseptene til Java da de danner grunnlaget for mange ting og hjelper til med enkel forståelse av mer avanserte konsepter.

Anbefalte artikler

Dette har vært en guide til den største forskjellen mellom Overloading vs Overriding. Her diskuterer vi også Overloading vs Overriding viktige forskjeller med infografikk, og sammenligningstabell. Du kan også se på følgende artikler for å lære mer -

  1. Funksjonell programmering vs OOP
  2. Hva er overstyring i JavaScript?
  3. Hvordan fungerer overbelastning i PHP?
  4. Oversikt over overbelastning i C #
  5. Overstyrer i Java
  6. Python-overbelastning
  7. Overbelastning og overstyring i C #