Johdanto Java-ylikuormitukseen ja ohittamiseen

Katsotaanpa ensin, mitä nimi viittaa sen ensi silmäyksellä. ”Ylikuormitus” tarkoittaa: jonkin verran lisärasituksen asettamista kenen tahansa alkuperäiselle toiminnallisuudelle, eikö niin? "Ohittaminen" tarkoittaa: uuden toiminnallisuuden tarjoamista kenen tahansa alkuperäisen toiminnallisuuden lisäksi. Tässä artikkelissa tarkastellaan yksityiskohtaisesti Javan ylikuormitusta ja ohittamista. Kyllä, myös Java-ohjelmissa nämä toteutetaan samalla tavalla ohjelmallisesti. Katsotaanpa tätä yksi kerrallaan.

Ylikuormitus Java-sovelluksessa

Kun Java-luokassa on useita menetelmiä, joilla on sama nimi, mutta joilla on eri argumentit, kutsumme sitä menetelmän ylikuormitukseksi. Pitämällä nimeä samana parannamme vain ohjelmakoodin luettavuutta. Oletetaan esimerkiksi, että meidän on suoritettava jokin lisätoiminto joillekin annettuille numeroille. Oletetaan, että menetelmämme nimi on “add ()”. Lisäys voidaan tehdä kahden, kolmen tai useamman numeron välillä. Tästä syystä voimme muuttaa funktion argumentteja (tai parametrejä) riippuen siitä, kuinka monta numeroa sisältää lisätoiminnon. Mutta sen sijaan, että jos kirjoittaisit erilaisia ​​menetelmiä eri määrille argumentteja, on vaikea tunnistaa, koska nimi olisi erilainen. Ylikuormituksella saavutamme siis koodimme paremman luettavuuden. Joten nyt kysymys kuuluu, kuinka saavutamme ylikuormituksen?

Tarkastellaan niitä yksitellen esimerkikoodeilla.

Menetelmä # 1 - muuttamalla parametrien lukumäärää

Joten tässä teemme lisäoperaation joillekin numeroille. Luodaan tätä varten luokka nimeltä “AdditionOperation”. Otetaan luokan sisällä kaksi menetelmää nimeltään “add ()”. Yhdessä näistä menetelmistä suoritamme kahden numeron lisäyksen. Toisessa suoritamme kolmen numeron lisäämisen. Tämän saavutamme yksinkertaisesti muuttamalla parametrien lukumäärää näissä menetelmissä, mutta pidämme nimen samana. Tällä tavalla ylikuormitamme menetelmää “lisäys ()” täällä.

Koodi:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

lähtö:

Menetelmä 2 - muokkaamalla tietotyyppiä

Joten tässä teemme lisätoiminnan erityyppisillä tyypeillä, esimerkiksi kokonaisluku- ja kaksoistyyppien välillä. Luodaan tätä varten luokka nimeltä “AdditionOperation”. Antakaamme luokan sisällä kaksi menetelmää nimeltä “add ()”. Yhdessä näistä menetelmistä suoritamme kahden kokonaisluvun lisäämisen. Toisessa suoritamme kahden tuplan lisäyksen. Tämän saavutamme yksinkertaisesti muuttamalla parametrien tyyppiä näissä menetelmissä, mutta pidämme nimen samana. Tällä tavalla ylikuormitamme menetelmää “lisäys ()” täällä.

Koodi:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

lähtö:

Huomioitavaa ylikuormituksesta

  • Javan ylikuormitus on pohjimmiltaan ”käännösajan polymMethod Overloading in C # orphism”. Kääntämisajan polymorfismia javassa kutsutaan myös nimellä ”staattisen menetelmän lähettäminen” tai “varhainen sitoutuminen”. Joten mitä tarkoitan tällä žargonilla?
  • Polymorfismi, kuten nimestä voi päätellä, on periaatteessa kyky esiintyä monissa muodoissa (poly: monet, morph: muoto). Joten tässä ylikuormitetun funktion ja kohteen yhdistäminen tai sitominen kääntää ajan. Siksi sitä kutsutaan käännös-ajan polymorfismiksi.
  • Pohjimmiltaan tässä toiminnon sitominen objektiin tehdään varhaisessa vaiheessa ennen ajoaikaa (ts. Kääntämisaikana), joten sitä kutsutaan myös ”varhaiseksi sitomiseksi”.
  • Staattinen lähetys on eräänlainen polymorfismi tai menetelmän lähettäminen, joka kertoo kuinka Java valitsee menetelmän toiminnallisuuden, jota käytetään kokoamisaikana. (Tarkoitan, suorittaako se kahden tai kolmen numeron lisäämisen koodausesimerkissämme). Joten nimi tunnetaan myös nimellä Static method Dispatch.

Ylivoimainen Java

  • Kun Java-alaluokalla tai lastenluokalla on menetelmä, joka on samanniminen ja sisältää samat parametrit tai argumentit ja samanlaisen palautustyypin kuin menetelmä, joka on läsnä sen superluokassa tai vanhemmaluokassa, niin voimme kutsua lastenluokan menetelmää vanhemman luokan menetelmän korvattu menetelmä.
  • Oletetaan esimerkiksi, että meidän on suoritettava jokin näyttöoperaatio sen luokan tyypin mukaan. Tarkoitan, että jos kutsun vanhemman luokan menetelmää, se näyttää viestin, joka on määritelty vanhemmaluokassa. Mutta kun kutsumme lastenluokan menetelmää, se ohittaa vanhemman luokansa näyttöviestin ja näyttää näyttöviestin, joka on määritelty lastenluokan menetelmän sisällä. Siksi riippuen siitä, minkä näytön meidän on näytettävä, voimme kutsua siihen liittyvää luokkaa (vanhempi tai lapsi). Tässä emme muuta metodin nimeä, argumenttia ja paluutapaa. Muutamme vain menetelmän toimivuutta lapsiluokassa. Mutta sen sijaan, jos emme tee ohitusta, ts. Emme anna erityistä lapsimenetelmän toteutusta, silloin, kun kutsutaan menetelmää, se näyttää saman viestin kuin vanhemmissa luokissa.
  • Koodia kirjoitettaessa käytämme @ Ohita huomautus ennen menetelmän ohittamista. @Override-merkintä kertoo kääntäjälle, että menetelmän on tarkoitus ohittaa menetelmä, joka on ilmoitettu supertuokassa. Vaikka sen käyttö ei ole pakollista, se auttaa estämään virheitä. Jos menetelmä, johon on merkitty @Override, ei ohita menetelmää, kääntäjä luo virheen.

Java-menetelmän ohittamista koskevat säännöt

  1. Menetelmällä on oltava sama nimi kuin vanhemmassa luokassa
  2. Menetelmällä on oltava sama parametri kuin vanhemmassa luokassa.
  3. IS-A-suhteen (perintö) on oltava.

Koodi:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

lähtö:

Rajoitukset menetelmän ohittamisessa:

  1. Vanhemmaluokan yksityisiä menetelmiä ei voida ohittaa.
  2. Lopullisia menetelmiä ei voida ohittaa
  3. Staattisia menetelmiä ei voida ohittaa

Huomiota herättävistä asioista

  • Javan ylikuormitus on pohjimmiltaan ”ajoajan polymorfismi”. Ajoajan polymorfismia javassa kutsutaan myös nimellä “Dynamic method Dispatch” tai “Late binding”. Joten mitä tällä žargonilla tarkoitetaan?
  • Polymorfismi, kuten nimestä voi päätellä, on periaatteessa kyky esiintyä monissa muodoissa (poly: monet, morph: muoto). Joten, tässä puhelussa ylikuormitettuun toimintoon objektin kanssa suoritetaan ajoaika. Kutsuttiin siis juoksuajan polymorfismiksi.
  • Periaatteessa tässä toiminnon sitoutuminen esineeseen tapahtuu myöhään, joka on kokoamisen jälkeen (ts. Ajon aikana); siksi sitä kutsutaan myös ”myöhäiseksi sitovaksi”.
  • Dynaaminen lähetys on polymorfismin tai menetelmän lähettämisen tyyppi, joka kertoo kuinka Java valitsee menetelmän toiminnallisuuden, jota käytetään ajon aikana. Joten nimi tunnetaan myös nimellä Dynamic method Dispatch.

johtopäätös

Tämä päättää oppimisen aiheesta ”Ylikuormitus ja Java-ohittaminen”. Kirjoita yllä olevissa esimerkeissä mainitut koodit Java-kääntäjään ja tarkista lähtö. Koodien oppiminen on epätäydellistä, jos et tee itse käsityötä, koska se parantaa koodaustaitojasi. Hyvää koodausta !!

Suositellut artikkelit

Tämä on opas Javain ylikuormitukseen ja ohittamiseen. Tässä keskustellaan ylikuormitusmenetelmistä sekä Java-järjestelmän ohituksen säännöistä ja rajoituksista. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Ohittaminen JavaScriptissä
  2. Ohittaminen OOP: issa
  3. Mitä Java-geneeriset tuotteet ovat?
  4. Ohittaminen PHP: ssä
  5. Pythonin ylikuormitus
  6. Perintö PHP: llä
  7. Täydellinen opas perinnöstä Pythonissa
  8. Ylikuormitus ja ohittaminen C #: ssä
  9. JavaScriptin tyypit ja käsittelyvirheet
  10. Esimerkkejä ja kuinka Generics toimii C #
  11. Ohitusten toiminta ja säännöt Pythonissa