Menetelmän ylikuormitus ja ohittaminen ovat kaksi tapaa, jolla Java osoittaa polymorfismin. Polymorfismi tulee kahden kreikkalaisen sanan yhdistelmästä: "poly" tarkoittaa monia ja "morph" tarkoittaa muotoa. Siksi polymorfismi mahdollistaa menetelmien omaksumisen monissa muodoissa.
Noudata tätä opasta oppiaksesi lataamaan tai ohittamaan Java-menetelmiä.
Mikä on menetelmän ylikuormitus?
"Menetelmän ylikuormitus" viittaa erilaisten menetelmien määrittelemiseen luokassa samalla nimellä. Menetelmillä on oltava erilaiset allekirjoitukset. Menetelmän allekirjoitus on menetelmän nimen ja parametriluettelon yhdistelmä. Se ei sisällä palautustyyppiä.
Kääntäjä tietää käytettävän menetelmän tarkistamalla niiden tyypin, parametrien lukumäärän ja järjestyksen.
Liittyvät: Perinnöllisyyden tutkiminen Java-ohjelmointikielellä
Menetelmän ylikuormitus osoittaa kääntöaikaisen polymorfismin. Compile-time 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än tyyppinen polymorfismi tunnetaan myös staattisena tai varhaisena sitoutumisena.
Katso alla oleva menetelmän ylikuormitusesimerkki:
luokka Aritmeettinen {
int kuutio (int x) {
paluu x * x * x;
}
kaksinkertainen kuutio (kaksinkertainen x) {
paluu x * x * x;
}
kelluva kuutio (float x) {
paluu x * x * x;
}
public staattinen void main (String [] argumentoi) {
Aritmeettinen myMultiplication = uusi aritmeettinen ();
System.out.println ("5: n kuutio on" + myMultiplication.cube (5));
System.out.println ("5.0: n kuutio on" + myMultiplication.cube (5.0));
System.out.println ("Kuutio 0,5 on" + myMultiplication.cube (0,5));
}
}
Tuotos:
5: n kuutio on 125
Kuutio 5,0 on 125,0
Kuutio 0,5 on 0,125
Yllä oleva koodi osoittaa, kuinka voit saada erityyppisen kuution (int, kaksinkertainen, kellua) samalla menetelmällä.
Yleensä menetelmän ylikuormitusta käytetään määrittelemään samanlaisia menetelmiä eri parametrityypeillä.
Mikä menetelmä on etusijalla?
Tämä tarkoittaa menetelmän erilaista toteutusta alaluokassa. Menetelmän on oltava jo määritelty vanhempaluokassa.
Korvaavalla menetelmällä (eli alaluokassa olevalla) on oltava sama metodin allekirjoitus kuin yläluokassa. Korvaavan menetelmän palautustyyppi voi olla sama tai alilaji kuin yliluokassa.
Ohittamista käytetään yleensä sisällyttämään objektin käyttäytymisen erityinen toteutus alaluokkaan.
luokan tili {
public void message () {
System.out.println ("
Kiitos, että avasit tilin kanssamme! ");
}
public staattinen void main (String args []) {
Tili myAccount = uusi tili ();
Säästöt mySavings = uudet säästöt ();
FixedDeposit myFixedDepo = uusi FixedDeposit ();
omaTili.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
luokan Säästöt laajentaa tiliä {
public void message () {
System.out.println ("
Kiitos, että avasit säästötilin kanssamme! ");
}
}
luokka FixedDeposit laajentaa tiliä {
public void message () {
System.out.println ("
Kiitos, että avasit meille kiinteän talletuksen! ");
}
}
Tuotos:
Kiitos, että avasit tilin kanssamme!
Kiitos, että avasit säästötilin kanssamme!
Kiitos, että avasit kiinteän talletuksen meille!
Yllä oleva esimerkki osoittaa, miten menetelmä viesti() on ohitettu alaluokissa Säästöt ja FixedDeposit. Eri viestejä näytetään pankkitilien haltijoille, joilla on säästötili, ja niille, joilla on kiinteä talletustili.
Liittyvät: Mitä sinun on tiedettävä merkkijonojen käytöstä Java-käyttöjärjestelmässä
On myös syytä huomata, että menetelmän ohittaminen osoittaa ajonaikaisen polymorfismin tai dynaamisen menetelmän lähettämisen. Tämä tarkoittaa, että kutsuttava menetelmä ratkaistaan suorituksen aikana eikä kääntämisen aikana.
Käytä avainsanaa välttääksesi menetelmän ohittamisen lopullinen.
viimeinen virheellinen viesti () {
System.out.println ("
Kiitos, että avasit tilin kanssamme! ");
}
Kun alaluokka yrittää ohittaa sen, tapahtuu käännösvirhe.
Ihannetapauksessa kaikkien konstruktorissa kutsuttujen menetelmien tulisi olla lopullinen. Tämän tarkoituksena on välttää alaluokkien mahdollisesti aiheuttamat tahattomat muutokset.
Joskus joudut ehkä käyttämään ohitettua menetelmää ohittavassa menetelmässä. Voit käyttää avainsanaa super jota seuraa pisteoperaattori (.) ja menetelmän nimi tällaisessa tapauksessa.
Harkitse superluokkaa Eläin.
luokan eläin {
public void move () {
System.out.println ("
Voin liikkua. ");
}
}
Alla on alaluokka, nimeltään Kalastaa, joka ohittaa liikkua():
luokka Fish laajentaa Animal {
public void move () {
System.out.println ("
Osaan uida.");
superliike ();
}
public staattinen void main (String args []) {
Kala Tilapia = uusi kala ();
Tilapia.move ();
}
}
Tuotos:
Osaan uida.
Voin liikkua.
Kun ohitat menetelmän, sinun on myös pidettävä mielessä käytettyä pääsynmuuttajaa. Alaluokan muokkaajan näkyvyyden tulisi olla sama tai korkeampi kuin perusluokassa. Esimerkiksi, jos perusluokan menetelmä määritellään seuraavasti suojattu, niin korvaava menetelmä voi olla joko suojattu tai julkinen.
Yksinkertainen koodi polymorfismilla
Menetelmän ohittaminen ja ylikuormitus ovat tärkeitä koodin yksinkertaistamisen kannalta, ja yksinkertainen koodi on hyvä käytäntö.
Miksi? Kuvittele monimutkainen koodikanta, jossa on enemmän sisään- ja ulospäin kuin Grand Central Station. Kuvittele nyt, kuinka tuhoisa vika alkaa tuhota kovan työn silmiesi edessä. Sinun on eristettävä infektion lähde, ja sinun on tehtävä se nopeasti.
Onnea, et yksinkertaistanut koodiasi... Nyt olet saamassa todellisen oppitunnuksen salauksesta. Tehokkaiden tietorakenteiden käyttäminen ja koodin lyhentämiseksi kaiken voitavan tekeminen (kuten DRY: n pitäminen mielessä) on paras suojasi tällaista tilannetta vastaan.
Seuraavaksi Java-oppimisluettelosi pitäisi toimia matriisien kanssa. Ne ovat tärkeitä tietorakenteita, joita käytetään datapiste-erien tallentamiseen.
Oppiminen Java? Anna matriisien käsitellä tietojasi helposti.
Lue seuraava
- Ohjelmointi
- Java
- Koodausoppaat
Jerome on MakeUseOfin henkilöstökirjailija. Hän käsittelee artikkeleita ohjelmoinnista ja Linuxista. Hän on myös salauksen harrastaja ja pitää aina salakirjoitusteollisuutta.
Tilaa uutiskirjeemme
Liity uutiskirjeeseemme, jossa on teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja erikoistarjouksia!
Vielä yksi askel !!!
Vahvista sähköpostiosoitteesi juuri lähettämässäsi sähköpostiviestissä.