Skillnaden mellan överbelastning kontra överbestyrning

Innan vi dyker djupt in i skillnaderna mellan överbelastning och övervägande, måste vi förstå vad de faktiskt är och de scenarier där de används särskilt? Nybörjare i Java blir ofta förvirrade mellan de två, men de skiljer sig helt från varandra och används i sina specifika scenarier. Metodöverbelastning är när vi har flera metoder med samma namn men olika signaturer. Underteckningar inkluderar antalet metodparametrar, datatypen för parametrar. Metodens returtyp ingår inte i signaturen. Detta görs för att ge funktionaliteten att återanvända samma metodnamn och öka programmets läsbarhet. Metodöverskridande inträffar i fallet med arv i vilken härledd klass ärver egenskaperna från basklassen. Det handlar om att definiera samma metod för basklass i en härledd klass med samma parameter och returtyp för att definiera någon specifik funktionalitet / implementering av den metoden i den härledda klassen.

Tänk på ett scenario där en programmerare behöver hitta området för en geometrisk figur. Området för varje figur varierar från varandra. För att hitta kvadratytan krävs exempelvis endast en enda parameter "sida", för rektangel krävs två parametrar "längd och bredd" medan för cirkel "radie krävs som kan vara decimal. För att lösa detta ändamål görs överbelastning där metodområdet har olika parametrar och datatyp för ett område med olika figurer. Tänk på banksystemets situation, även om flera metoder och förfaranden för alla anställda är desamma, förutom vissa räntesatser för vanliga och äldre är annorlunda. I detta fall används metodöverskridande med olika implementeringar av metodens räntesatser i både den normala och den äldre klassen som ärver basklassen 'bankräntor'.

Jämförelse mellan huvudet och huvudet mellan överbelastning och överträffande (Infographics)

Nedan visas topp 7-jämförelsen mellan överbelastning och överåtriktning :

Viktiga skillnader mellan överbelastning kontra överbestyrning

Låt oss diskutera några av de viktigaste nyckelskillnaderna mellan överbelastning och åsidosättande:

  1. Vid överbelastning av metoder kan metoder ha samma eller olika åtkomstspecifikatorer / modifierare i metodnamnet, medan i metodöverbrytningsmetod för basfall (åsidosatt metod) måste ha begränsad åtkomstspecifikation än metoden för en överordnad klass. Till exempel, om metoden för en basklass är skyddad, är barnmetoden privat inte tillåten.
  2. Jämfört med avseende på prestanda har överbelastning bättre prestanda som en jämförelse med Överskridande eftersom metodöverbelastning görs vid kompileringstiden.
  3. En metods returtyp är aldrig en del av metoden Överbelastning och därför spelar det ingen roll om olika överbelastade metoder har samma eller olika returtyp medan i Metod Överriderande av returtyp för både föräldrarnas och basklassens metoder måste vara exakt samma .
  4. När man talar om bindning har överbelastning statisk bindning medan Övertridning har dynamisk bindning.
  5. Undantag som kastas med metod spelar ingen roll i den överbelastade metoden om en metod kastar undantag andra överbelastade metoder kan / kan inte kasta samma eller annorlunda undantag, men i fall av Överbestyrning kan Överridningsmetod (metod i härledd klass) inte kasta undantag från högre hierarki än den åsidosatta metoden (metod i basklass).
  6. Alla specifikationer som privata, slutliga och statiska kan inte användas i metodöverskridande medan alla åtkomstspecifikationer är tillåtna i metodöverbelastning.

Jämförelsetabell över överbelastning kontra överbestyrning

I tabellen nedan sammanfattas jämförelserna mellan överbelastning och överbestyrning:

S.No. överbelastning tvingande
1Metodöverbelastning görs för att få en förbättrad definition av metoder enligt olika situationer.Metodöverskridande görs för att tillhandahålla en specifik implementering av metoder definierade i förälderklassen.
2Metod Överbelastning sker i en enda klass där en klass har olika definitioner av en metod.Metodöverskridande görs mellan två klasser som har ett IS-A (arv) -förhållande mellan dem.
3Metod Överbelastning sker vid kompileringstid och därför är det känt som kompileringstid polymorfism.Metodöverskridande utförs under körning och därför kallas det runtime Polymorphism.
4Parameterbeställning, datatyp och parameterantal måste vara olika för metodöverbelastning.Parameterbeställning, datatyp och räkning måste vara densamma för metodöverskridande.
5Returtypen för en metod kan vara densamma eller annorlunda vid metodöverbelastning. Det spelar ingen roll alls.En metods returtyp måste vara densamma i både förälder- och barnklass om metodöverskridande.
6Statiska metoder kan överbelastas, dvs vi kan ha olika statiska metoder överbelastade i samma klass.Statiska metoder kan aldrig åsidosättas, dvs. statisk metod i en förälderklass och basklass har ingen relation däremellan.
7Privata och slutliga metoder kan överbelastas i en klass, dvs en klass kan ha överbelastat mer än 1 privata och slutliga metoder.Privata och slutliga metoder kan aldrig åsidosättas i en barnklass.

Exempel på överbelastning av metod:

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:

Area of ​​Square 100
Arean av rektangel 120

I exemplet ovan är metoden 'område ()' överbelastad och har olika parametrar i båda överbelastade metoderna. Eftersom området måste ta reda på både kvadrat och rektangel men med olika parametrar.

Exempel på åsidosättande av metod:

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:

Priserna för äldre är 4, 5%

I exemplet ovan åsidosätts metoden 'satser ()' i den härledda klassen 'SeniorCitizen' eftersom vi vill att metodgraderna i klassen SeniorCitizen också men med en annan implementering.

Slutsats

Ovanstående förklaring visar tydligt skillnaden mellan överbelastning kontra överbestyrning och de specifika scenarierna där dessa två används. Innan man programmerar måste man förstå dessa kärnbegrepp i Java eftersom de utgör grunden för många saker och hjälper till att förstå de mer avancerade koncepten.

Rekommenderade artiklar

Detta har varit en guide till den största skillnaden mellan överbelastning kontra överbestyrning. Här diskuterar vi också överbelastning vs övervägande viktiga skillnader med infografik och jämförelsetabell. Du kan också titta på följande artiklar för att lära dig mer -

  1. Funktionell programmering kontra OOP
  2. Vad överbryter i JavaScript?
  3. Hur fungerar överbelastning i PHP?
  4. Översikt över överbelastning i C #
  5. Övergripande i Java
  6. Python överbelastning
  7. Överbelastning och överbestyrning i C #

Kategori: