Java polümorfism: kuidas meetodeid üle koormata või alistada

Java polümorfism: kuidas meetodeid üle koormata või alistada

Meetodi ülekoormamine ja alistamine on kaks viisi, kuidas Java demonstreerib polümorfismi. Polümorfism tuleneb kahe kreekakeelse sõna kombinatsioonist: 'polü' tähendab palju ja 'morf' tähendab vormi. Seetõttu võimaldab polümorfism meetoditel omandada mitmeid vorme.





Järgige seda juhendit, et õppida, kuidas Java -meetodid üle koormata või alistada.





Mis on meetodi ülekoormus?

„Meetodi ülekoormamine” viitab erinevate meetodite määratlemisele sama nimega klassis. Meetoditel peavad olema erinevad allkirjad. Meetodi allkiri on meetodi nime ja parameetrite loendi kombinatsioon. See ei sisalda tagastamise tüüpi.





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

Seotud: Pärandi uurimine Java programmeerimiskeeles



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

Seda tüüpi polümorfismi nimetatakse ka staatiliseks või varaseks sidumiseks.





Vaadake allpool näidet ülekoormuse kohta:

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

Väljund:





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

Ülaltoodud kood näitab, kuidas saate erinevat tüüpi kuubi ( int , kahekordne , hõljuma ), kasutades sama meetodit.

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

Mis on meetodi alistamine?

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

Ülekaalulisel meetodil (st alamklassis) peab olema sama meetodi allkiri kui ülemklassis. Alistamismeetodi tagastustüüp võib olla sama või alamtüüp ülemklassi omast.

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

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!');
}
}

Väljund:

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!

Ülaltoodud näide näitab, kuidas meetodit kasutatakse sõnum () on alamklassides alistatud Säästud ja Fikseeritud hoius . Pangakonto omanikele, kellel on säästukonto ja fikseeritud hoiusekonto, kuvatakse erinevaid teateid.

Seotud: Mida peate teadma stringi kasutamise kohta Java -s

Samuti väärib märkimist, et meetodi alistamine näitab käitusaegset polümorfismi või dünaamilist meetodi saatmist. See tähendab, et kutsutav meetod lahendatakse pigem käitusajal kui kompileerimisel.

Meetodi alistamise vältimiseks kasutage märksõna lõplik .

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

Kui alamklass üritab seda alistada, ilmneb kompileerimisviga.

Ideaalis peaksid kõik konstruktoris kutsutud meetodid olema lõplik . Selle eesmärk on vältida soovimatuid muudatusi, mis võivad olla põhjustatud alamklassidest.

Mõnikord peate võib -olla alistamismeetodi raames kasutama alistatud meetodit. Võite kasutada märksõna Super millele järgneb punktioperaator ( . ) ja meetodi nimi sellisel juhul.

Mõelge superklassile Loom .

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

Allpool on alamklass, nn Kala , see alistab liikuma () :

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

Väljund:

kuidas leida kõik minu nimel olevad meilikontod
I can swim.
I can move.

Meetodi alistamisel peate arvestama ka kasutatava juurdepääsu muutjaga. Alamklassi modifikaator peaks olema sama nähtavuse tasemega või kõrgem kui põhiklassis. Näiteks kui põhiklassi meetod on määratletud kui kaitstud , siis võib ülekaalukas meetod olla kas kaitstud või avalik .

Lihtne kood polümorfismiga

Meetodi alistamine ja ülekoormamine on koodi lihtsustamisel olulised ning lihtne kood on hea tava.

Miks? Kujutage ette keerulist koodibaasi, millel on rohkem lisavõimalusi kui Grand Central Stationil. Kujutage nüüd ette, et laastav viga hakkab teie rasket tööd teie silme all hävitama. Peate nakkuse allika isoleerima ja peate seda kiiresti tegema.

Palju õnne, sa ei lihtsustanud oma koodi ... Nüüd saad sa tõelise krüptograafiatundi. Kasutades tõhusaid andmestruktuure ja tehes kõik endast oleneva, et lühendada koodi (nt pidades silmas DRY -d), on teie parim kaitse sellise olukorra vastu.

Järgmisena peaks teie Java õppimisloendis töötama massiividega. Need on olulised andmestruktuurid, mida kasutatakse andmepunktide partiide salvestamiseks.

Jaga Jaga Piiksuma E -post Kuidas Java -massiivides toiminguid luua ja teha

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

Loe edasi
Seotud teemad
  • Programmeerimine
  • Java
  • Kodeerimise õpetused
Autori kohta Jerome Davidson(22 artiklit avaldatud)

Jerome on MakeUseOfi personalikirjanik. Ta hõlmab artikleid programmeerimise ja Linuxi kohta. Ta on ka krüptohuviline ja jälgib alati krüptotööstust.

Veel Jerome Davidsonilt

Telli meie uudiskiri

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

Tellimiseks klõpsake siin