Polymorfismi Java: Kuinka ylikuormittaa tai ohittaa menetelmiä

Polymorfismi Java: Kuinka ylikuormittaa tai ohittaa menetelmiä

Menetelmän ylikuormitus ja ohitus ovat kaksi tapaa, joilla Java osoittaa polymorfismin. Polymorfismi tulee kahden kreikkalaisen sanan yhdistelmästä: 'poly' tarkoittaa monia ja 'morf' tarkoittaa muotoa. Siksi polymorfismi mahdollistaa menetelmien moninaisten muotojen saamisen.





Seuraa tätä opasta oppiaksesi ylikuormittamaan tai ohittamaan menetelmiä Javassa.





Mikä on menetelmän ylikuormitus?

'Metodin ylikuormitus' viittaa eri menetelmien määrittämiseen samannimisessä luokassa. Menetelmillä on oltava eri allekirjoitukset. Metodin allekirjoitus on metodin nimen ja parametriluettelon yhdistelmä. Se ei sisällä palautustyyppiä.





Kääntäjä tietää käytettävän menetelmän tarkistamalla parametrien tyypin, lukumäärän ja järjestyksen.

Aiheeseen liittyviä: Tutki perintöä Java -ohjelmointikielellä



Menetelmän ylikuormitus osoittaa käännösaikaisen polymorfismin. Kääntämisajan polymorfismi tarkoittaa, että Java-kääntäjä sitoo objektin sen toiminnallisuuteen ajon aikana. Kääntäjä tarkistaa menetelmän allekirjoitukset tämän saavuttamiseksi.

Tämäntyyppinen polymorfismi tunnetaan myös staattisena tai varhaisena sitoutumisena.





Katso esimerkki ylikuormitusmenetelmästä alla:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Lähtö:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

Yllä oleva koodi näyttää, kuinka voit saada erityyppisen kuution ( int , kaksinkertainen , kellua ) käyttäen samaa menetelmää.

Yleensä menetelmän ylikuormitusta käytetään samanlaisten menetelmien määrittämiseen eri parametrityypeillä.

Mikä on menetelmän ohitus?

Tämä viittaa menetelmän eri toteutukseen alaluokassa. Menetelmän on oltava jo määritetty pääluokassa.

Ohitusmenetelmällä (eli alaluokalla) on oltava sama metodin allekirjoitus kuin superluokalla. Korvaavan menetelmän palautustyyppi voi olla sama tai alatyyppi kuin superluokassa.

Ohitusta käytetään yleensä sisällyttämään tietyn toteutuksen objektin käyttäytymisestä alakategoriassa.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Lähtö:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

Yllä oleva esimerkki osoittaa, miten menetelmä viesti() on ohitettu alaluokissa Säästöjä ja Kiinteä talletus . Erilaiset viestit näytetään pankkitilien haltijoille, joilla on säästötili ja joilla on kiinteä talletustili.

Aiheeseen liittyviä: Mitä sinun tarvitsee tietää merkkijonojen käyttämisestä Javassa

On myös syytä huomata, että menetelmän ohitus osoittaa ajonaikaisen polymorfismin tai dynaamisen menetelmän lähettämisen. Tämä tarkoittaa, että kutsuttava menetelmä ratkaistaan ​​suorituksen aikana kääntämisen sijaan.

Käytä avainsanaa, jotta menetelmää ei ohiteta lopullinen .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Kun alaluokka yrittää ohittaa sen, tapahtuu kokoamisvirhe.

Ihannetapauksessa kaikkien rakenteessa kutsuttujen menetelmien tulisi olla lopullinen . Näin vältetään tahattomat muutokset, joita alaluokat voivat aiheuttaa.

Joskus saatat joutua käyttämään ohitettua menetelmää ohitusmenetelmän sisällä. Voit käyttää avainsanaa super jota seuraa pisteoperaattori ( . ) ja menetelmän nimi tällaisessa tapauksessa.

Harkitse superluokkaa Eläin .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Alla on alaluokka, ns Kalastaa , se ohittaa liikkua() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Lähtö:

kuinka ottaa kuvakaappaus snapchatissa ilman, että joku tietää
I can swim.
I can move.

Kun ohitat menetelmän, sinun on myös otettava huomioon käytetyt käyttömuokkaimet. Alaluokan muokkaajan näkyvyyden tulisi olla sama tai korkeampi kuin perusluokassa. Jos esimerkiksi perusluokan menetelmä on määritelty muodossa suojattu , silloin korvaava menetelmä voi olla joko suojattu tai julkinen .

Yksinkertainen koodi polymorfismin kanssa

Menetelmien ohittaminen ja ylikuormitus ovat tärkeitä koodin yksinkertaistamisen kannalta, ja yksinkertainen koodi on hyvä käytäntö.

Miksi? Kuvittele monimutkainen kooditietokanta, jossa on enemmän ja huonompia ominaisuuksia kuin Grand Central Station. Kuvittele nyt, että tuhoisa vika alkaa tuhota kovaa työtäsi silmiesi edessä. Sinun on eristettävä tartunnan lähde, ja sinun on tehtävä se nopeasti.

Onnea, et yksinkertaistanut koodiasi ... Nyt saat todellisen salausopetuksen. Käytä tehokkaita tietorakenteita ja tee kaikkesi koodin lyhentämiseksi (kuten pitämällä DRY mielessä) paras suoja tällaista tilannetta vastaan.

Seuraavaksi Java -oppimisluettelossasi pitäisi työskennellä matriisien kanssa. Ne ovat tärkeitä tietorakenteita, joita käytetään datapisteiden erien tallentamiseen.

Jaa Jaa Tweet Sähköposti Miten luodaan ja suoritetaan toimintoja Java -massoilla

Opitko Javaa? Anna matriisien käsitellä tietojasi helposti.

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Java
  • Koodausoppaat
Kirjailijasta Jerome Davidson(22 artikkelia julkaistu)

Jerome on MakeUseOfin henkilöstökirjoittaja. Hän käsittelee ohjelmointia ja Linuxia käsitteleviä artikkeleita. Hän on myös krypto -harrastaja ja seuraa aina salausteollisuutta.

Lisää Jerome Davidsonilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi