Meetodi ülekoormamine ja ületamine on kaks viisi, kuidas Java demonstreerib polümorfismi. Polümorfism tuleneb kahe kreekakeelse sõna kombinatsioonist: "poly", mis tähendab paljusid, ja "morph", mis tähendab vormi. Seetõttu võimaldab polümorfism meetoditel mitmel kujul omandada.

Järgige seda juhendit, et õppida, kuidas Java-s meetodeid üle laadida või alistada.

Mis on meetodi ülekoormamine?

"Meetodi ülekoormamine" viitab erinevate meetodite määratlemisele samanimelises klassis. Meetoditel peavad olema erinevad allkirjad. Meetodi allkiri on meetodi nime ja parameetrite loendi kombinatsioon. See ei sisalda tagastuse tüüpi.

Kompilaator teab, millist meetodit kasutada, kontrollides nende paigutamise tüüpi, parameetrite arvu ja järjekorda.

Seotud: Pärimise uurimine Java programmeerimiskeeles

Meetodi ülekoormamine näitab kompileerimisaja polümorfismi. Kompileerimisaegne polümorfism tähendab, et Java kompilaator seob objekti käitamise ajal selle funktsionaalsusega. Selle saavutamiseks kontrollib koostaja meetodi allkirju.

Seda tüüpi polümorfismi tuntakse ka staatilise või varase seondumisena.

Vaadake allpool toodud meetodi ülekoormamise näidet:

klass Aritmeetika {
int kuup (int x) {
tagastage x * x * x;
}
topeltkuup (kahekordne x) {
tagastage x * x * x;
}
ujukupp (ujuk x) {
tagastage x * x * x;
}
public staatiline void main (String [] args) {
Aritmeetiline myMultiplication = uus aritmeetika ();
System.out.println ("Kuup viiest on" + myMultiplication.cube (5));
System.out.println ("Kuup 5.0 on" + myMultiplication.cube (5.0));
System.out.println ("Kuup väärtusega 0,5 on" + myMultiplication.cube (0,5));
}
}

Väljund:

Kuubik 5 on 125
Kuup 5,0 on 125,0
Kuup 0,5 on 0,125

Ülaltoodud kood näitab, kuidas saate erinevat tüüpi kuupi (int, topelt, ujuk), kasutades sama meetodit.

Üldiselt kasutatakse erinevate parameetritüüpidega sarnaste meetodite määratlemiseks meetodi ülekoormamist.

Mis on meetod ülimuslik?

See viitab meetodi erinevale rakendamisele alaklassis. Meetod peab olema juba vanemaklassis määratletud.

Ülekirjutaval meetodil (st alamklassis oleval) peab olema sama meetodi allkiri kui superklassis. Ülimusliku meetodi tagastustüüp võib olla sama või alamtüüp superklassis.

Alistamist kasutatakse tavaliselt objekti käitumise konkreetse rakendamise lisamiseks alaklassis.

klassi konto {
avalik tühine sõnum () {
System.out.println ("
Täname teid konto avamise eest! ");
}
public staatiline void main (String args []) {
Konto myAccount = uus konto ();
Säästud mySavings = new Savings ();
FixedDeposit myFixedDepo = new FixedDeposit ();
myAccount.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
klassi säästud laiendavad kontot {
avalik tühine sõnum () {
System.out.println ("
Täname teid hoiukonto avamise eest! ");
}
}
klass FixedDeposit laiendab kontot {
avalik tühine sõnum () {
System.out.println ("
Täname, et avasite meie juures fikseeritud hoiusega konto! ");
}
}

Väljund:

Täname teid konto avamise eest!
Täname teid hoiukonto avamise eest!
Täname, et avasite meie juures fikseeritud hoiusega konto!

Ülaltoodud näide näitab, kuidas meetod sõnum () on alaklassides alistatud Säästud ja FixedDeposit. Hoiukontoga pangakonto omanikele ja fikseeritud hoiusega kontole kuvatakse erinevad teated.

Seotud: Mida peate teadma stringide kasutamise kohta Javas

Samuti väärib märkimist, et meetodi eiramine näitab käituse polümorfismi või meetodi dünaamilist edastamist. See tähendab, et kutsutav meetod lahendatakse pigem käitamise kui kompileerimise ajal.

Et vältida meetodi tühistamist, kasutage märksõna lõplik.

lõplik tühine sõnum () {
System.out.println ("
Täname teid konto avamise eest! ");
}

Kui alamklass üritab seda alistada, tekib kompileerimisviga.

Ideaalis peaksid kõik konstruktori sees kutsutud meetodid olema lõplik. Selle eesmärk on vältida tahtmatuid muudatusi, mis võivad olla põhjustatud alaklassidest.

Mõnikord peate võib-olla peamises meetodis juurde pääsema alistatud meetodile. Võite kasutada märksõna Super järgneb punktioperaator (.) ja sellisel juhul meetodi nime.

Mõelge superklassile Loom.

klassi loom {
avalik tühine käik () {
System.out.println ("
Ma saan liikuda. ");
}
}

Allpool on alaklass, nn Kala, mis alistab liikuma ():

klassi kala laiendab Animal {
avalik tühine käik () {
System.out.println ("
Oskan ujuda. ");
superliiguta ();
}
public staatiline void main (String args []) {
Kala Tilapia = uus kala ();
Tilapia.move ();
}
}

Väljund:

Oskan ujuda.
Ma saan liikuda.

Meetodi ületamisel peate olema tähelepanelik ka kasutatava juurdepääsu modifikaatori suhtes. Alamklassi modifikaatoril peaks olema sama nähtavus või kõrgem tase kui põhiklassis. Näiteks kui baasklassi meetod on määratletud järgmiselt kaitstud, siis võib ülimuslik meetod olla kas kaitstud või avalik.

Lihtne kood polümorfismiga

Meetodi ülekandmine ja ülekoormamine on koodi lihtsustamise jaoks olulised ning lihtne kood on hea tava.

Miks? Kujutage ette keerukat koodibaasi, millel on rohkem sisse- ja väljapääsu kui Grand Central Stationil. Kujutage nüüd ette, et hävitav viga hakkab teie rasket tööd teie silme ees hävitama. Peate eraldama nakkuse allika ja peate seda kiiresti tegema.

Edu, te ei lihtsustanud oma koodi... Nüüd saate krüptograafias tõelise õppetunni. Tõhusate andmestruktuuride kasutamine ja koodi lühendamiseks kõik, mis võimalik, (näiteks DRY meeles pidamine) on teie parim kaitse sellise olukorra vastu.

Järgmine Java-õppe loendis peaks töötama massiividega. Need on olulised andmestruktuurid, mida kasutatakse andmepunktide partiide salvestamiseks.

E-post
Kuidas luua ja teha Java-massiividega toiminguid

Java õppimine? Laske massiividel teie andmeid hõlpsalt käsitseda.

Loe edasi

Seotud teemad
  • Programmeerimine
  • Java
  • Kodeerimise õpetused
Autori kohta
Jerome Davidson (15 artiklit on avaldatud)

Jerome on MakeUseOfi personalikirjanik. Ta käsitleb artikleid programmeerimise ja Linuxi kohta. Ta on ka krüptoentusiast ja hoiab krüptotööstuses alati vahelehti.

Veel Jerome Davidsonilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, kus leiate tehnilisi näpunäiteid, ülevaateid, tasuta e-raamatuid ja eksklusiivseid pakkumisi!

Veel üks samm !!!

Palun kinnitage oma e-posti aadress e-kirjas, mille just teile saatsime.

.