Ero ylikuormituksen ja ohittamisen välillä

Ennen kuin sukeltamme syvälle ylikuormituksen ja ohittamisen eroihin, meidän on ymmärrettävä, mitkä ne ovat tosiasiallisesti ja skenaarioita, joissa niitä käytetään erityisesti? Java-aloittelijat sekoittuvat usein näiden kahden välillä, mutta ne ovat täysin erilaisia ​​toisistaan ​​ja niitä käytetään erityisissä tilanteissa. Menetelmän ylikuormitus tapahtuu, kun meillä on useita menetelmiä samalla nimellä, mutta eri allekirjoituksilla. Allekirjoitukset sisältävät menetelmäparametrien lukumäärän, parametrien tietotyypin. Palautusmenetelmän tyyppiä ei sisällytetä allekirjoitukseen. Tämä tehdään, jotta voidaan käyttää saman menetelmän nimen uudelleenkäyttöä ja ohjelmien luettavuuden lisäämistä. Menetelmän ohittaminen tapahtuu perinnöllisyyden tapauksessa, jossa johdettu luokka perii ominaisuudet perusluokalta. Siihen sisältyy saman perusluokan menetelmän määritteleminen johdetussa luokassa samalla parametrilla ja paluulajilla, jotta voidaan määritellä minkä tahansa kyseisen menetelmän erityinen toiminnallisuus / toteutus johdetussa luokassa.

Mieti tilannetta, jossa ohjelmoijan on löydettävä geometrisen kuvan alue. Kunkin hahmon pinta-ala vaihtelee toisistaan. Esimerkiksi neliön pinta-alan löytämiseksi vaaditaan vain yksi parametri 'puoli', suorakulmioon tarvitaan kaksi parametria 'pituus ja leveys', kun taas ympyrälle 'säde, joka voi olla desimaali. Tämän tarkoituksen ratkaisemiseksi suoritetaan ylikuormitus, jossa menetelmäalueella on erilaiset parametrit ja datatyyppi eri kuvioalueille. Ajattele pankkijärjestelmän tilannetta, vaikka useat menetelmät ja menettelytavat kaikille työntekijöille ovat samat, paitsi joihinkin, kuten normaalien ja vanhusten korot, ovat erilaiset. Tässä tapauksessa käytetään menetelmää ohittavana, jolla on erilaiset menetelmän korkojen toteutukset sekä normaalissa että vanhusten luokassa, joka perii perusluokan 'pankkikorot'.

Head to Head -vertailu ylikuormituksen ja ohittamisen välillä (infografia)

Alla on seitsemän tärkeintä vertailua ylikuormituksen ja ohittamisen välillä :

Keskeiset erot ylikuormituksen ja ohittamisen välillä

Keskustelemme joistakin tärkeimmistä eroista ylikuormituksen ja ohittamisen välillä:

  1. Menetelmän ylikuormituksessa menetelmillä voi olla samat tai erilaiset pääsymääritykset / muokkaimet menetelmän nimessä, kun taas menetelmässä Perusaseman ohitusmenetelmä (ohitettu menetelmä) on oltava rajoitetun pääsyn määrittelijä kuin vanhemman luokan menetelmällä. Esimerkiksi, jos perusluokan menetelmä on suojattu, lapsimenetelmä yksityinen ei ole sallittu.
  2. Suorituskykyyn verrattuna ylikuormituksella on parempi suorituskyky verrattuna ohittamiseen, koska menetelmän ylikuormitus tapahtuu käännöshetkellä.
  3. Menetelmän palautustyyppi ei ole koskaan osa menetelmää Ylikuormitus, joten ei ole väliä, onko erilaisilla ylikuormitetut menetelmillä sama tai erilainen palautustyyppi, kun taas menetelmässä Ylivoiva palautustyyppi sekä emo- että perusluokan menetelmien on oltava täsmälleen samat .
  4. Sidosta puhuttaessa ylikuormituksella on staattinen sidonta, kun taas Ylikuormituksella on dynaaminen sidonta.
  5. Menetelmällä heitetyllä poikkeuksella ei ole merkitystä ylikuormitetussa menetelmässä, jos yksi menetelmä heittää poikkeuksen, muut ylikuormitetut menetelmät voivat / eivät voi heittää samaa tai erilaista poikkeusta, mutta ohittamisen tapauksessa ohitusmenetelmä (menetelmä johdetussa luokassa) ei voi heittää poikkeusta korkeammasta hierarkiasta kuin ohitettu menetelmä (menetelmä perusluokassa).
  6. Kaikkia eritelmiä, kuten yksityistä, lopullista ja staattista, ei voida käyttää menetelmässä ohittamiseen, kun taas kaikki käyttöoikeusspesifikaattorit ovat sallittuja menetelmän ylikuormituksessa.

Ylikuormituksen ja ohittamisen vertailutaulukko

Seuraavassa taulukossa on yhteenveto vertailusta ylikuormituksen ja ohittamisen välillä:

S.No. Ylikuormitus ensisijainen
1Menetelmien ylikuormitus tehdään, jotta menetelmillä olisi parempi määritelmä eri tilanteiden mukaan.Menetelmän ohitus tehdään, jotta voidaan tarjota erityinen emoympäristössä määriteltyjen menetelmien toteutus.
2Menetelmä Ylikuormitus tapahtuu yhdessä luokassa, jossa yhdellä luokalla on eri määritelmät menetelmälle.Menetelmän ohittaminen tapahtuu kahden luokan välillä, joiden välillä on IS-A (perintö) -suhde.
3Menetelmä Ylikuormitus tapahtuu käännöshetkellä, ja siksi se tunnetaan nimellä Compile time Polymorphism.Menetelmän ohittaminen suoritetaan ajonaikaisesti, joten sitä kutsutaan ajonaikaiseksi polymorfismiksi.
4Parametrien tilauksen, tietotyypin ja parametrien lukumäärän on oltava erilaiset menetelmän ylikuormitusta varten.Parametrien järjestyksen, tietotyypin ja määrän on oltava samat menetelmän ohittamiselle.
5Menetelmän paluutyyppi voi olla sama tai erilainen menetelmän ylikuormituksen tapauksessa. Sillä ei ole mitään merkitystä.Menetelmän palautustyypin on oltava sama sekä vanhempien että lasten luokassa, jos menetelmä ohitetaan.
6Staattiset menetelmät voidaan ylikuormittaa, ts. Meillä voi olla erilaisia ​​staattisia menetelmiä ylikuormitettu samassa luokassa.Staattisia menetelmiä ei voida koskaan ohittaa, ts. Vanhemmaluokalla ja perusluokalla ei ole staattista menetelmää niiden välillä.
7Yksityiset ja lopulliset menetelmät voidaan ylikuormittaa luokassa, ts. Luokka voi olla ylikuormittanut enemmän kuin yhden yksityisen ja lopullisen menetelmän.Lasten luokassa ei koskaan voida ohittaa yksityisiä ja lopullisia menetelmiä.

Esimerkki menetelmän ylikuormituksesta:

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

lähtö:

Aukion 100 ala
Suorakulmion 120 alue

Yllä olevassa esimerkissä menetelmä 'alue ()' on ylikuormitettu ja sillä on erilaiset parametrit molemmissa ylikuormitetussa menetelmässä. Koska alue on selvitettävä sekä neliölle että suorakaidelle, mutta eri parametreilla.

Esimerkki menetelmän ohittamisesta:

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

lähtö:

Vanhusten hinnat ovat 4, 5%

Yllä olevassa esimerkissä menetelmä 'rate ()' on korvattu johdetussa luokassa 'SeniorCitizen', koska haluamme myös menetelmänopeudet luokassa SeniorCitizen, mutta jolla on erilainen toteutus.

johtopäätös

Yllä oleva selitys osoittaa selvästi eron ylikuormituksen ja ohittamisen ja niiden erityisten skenaarioiden välillä, joissa näitä kahta käytetään. Ennen ohjelmointia on ymmärrettävä nämä Java-ydinkäsitteet, koska ne muodostavat perustan monille asioille ja auttavat ymmärtämään edistyneempiä käsitteitä helposti.

Suositellut artikkelit

Tämä on opas suurimpaan eroon ylikuormituksen ja ohittamisen välillä. Tässä keskustellaan myös ylikuormituksesta vs. pakottavista tärkeimmistä eroista infografian ja vertailutaulukon kanssa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Toiminnallinen ohjelmointi vs. OOP
  2. Mikä on ohittamista JavaScriptillä?
  3. Kuinka ylikuormitus toimii PHP: ssä?
  4. Yleiskatsaus C #: n ylikuormituksesta
  5. Ylivoimainen Java
  6. Pythonin ylikuormitus
  7. Ylikuormitus ja ohittaminen C #: ssä