Polimorfizem v Javi: kako preobremeniti ali preglasiti metode

Polimorfizem v Javi: kako preobremeniti ali preglasiti metode

Preobremenitev in preglasitev metod sta dva načina, na katerih Java dokazuje polimorfizem. Polimorfizem izhaja iz kombinacije dveh grških besed: 'poly', ki pomeni veliko, in 'morph', ki pomeni obliko. Zato polimorfizem omogoča, da imajo metode različne oblike.





Upoštevajte ta priročnik, če želite izvedeti, kako preobremeniti ali preglasiti metode v Javi.





Kaj je preobremenitev metode?

'Preobremenitev metode' se nanaša na opredelitev različnih metod v razredu z istim imenom. Metode morajo imeti različne podpise. Podpis metode je kombinacija imena metode in seznama parametrov. Ne vključuje vrste vračila.





Prevajalnik ve, katero metodo uporabiti, tako da preveri vrsto, število parametrov in vrstni red, v katerem so postavljeni.

Povezano: Raziskovanje dedovanja v programskem jeziku Java



Preobremenitev metode dokazuje polimorfizem med prevajanjem. Polimorfizem v času prevajanja pomeni, da prevajalnik Java med izvajanjem veže objekt na svojo funkcionalnost. Da bi to dosegel, prevajalnik preveri podpise metod.

Ta vrsta polimorfizma je znana tudi kot statična ali zgodnja vezava.





Oglejte si spodnji primer preobremenitve metode:

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

Izhod:





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

Zgornja koda prikazuje, kako lahko dobite kocke različnih vrst ( int , dvojno , plavati ) po isti metodi.

Na splošno se preobremenitev metode uporablja za opredelitev podobnih metod z različnimi tipi parametrov.

Kaj je prednost metode?

To se nanaša na drugačno izvedbo metode v podrazredu. Metoda mora biti že definirana v nadrejenem razredu.

Metoda preglasitve (tj. Tista v podrazredu) mora imeti enak podpis metode kot v nadrazredu. Vrnitev vrste preglasitvene metode je lahko enaka ali podtip tiste v nadrazredu.

Preglasitev se običajno uporablja za vključitev posebne izvedbe vedenja objekta v podrazred.

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

Izhod:

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!

Zgornji primer prikazuje, kako se uporablja metoda sporočilo () se v podrazredih preglasi Prihranki in FixedDeposit . Za imetnike bančnih računov z varčevalnim računom in za tiste s fiksnim depozitom bodo prikazana različna sporočila.

Povezano: Kaj morate vedeti o uporabi nizov v Javi

Omeniti velja tudi, da preglasitev metode dokazuje polimorfizem med izvajanjem ali odpremo dinamične metode. To pomeni, da se metoda, ki jo je treba poklicati, razreši v času izvajanja in ne pri sestavljanju.

Če želite preprečiti preglasitev metode, uporabite ključno besedo končno .

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

Ko ga podrazred poskuša preglasiti, bo prišlo do napake pri sestavljanju.

V idealnem primeru bi morale biti vse metode, poklicane v konstruktorju končno . S tem se izognemo nenamernim spremembam, ki jih lahko povzročijo podrazredi.

Včasih boste morali v metodi preglasitve dostopati do preglašene metode. Uporabite lahko ključno besedo super sledi operater pike ( . ) in ime metode v takem primeru.

Razmislite o superrazredu Živalska .

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

Spodaj je podrazred, imenovan Ribe , to preglasi premakni () :

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

Izhod:

žal se je proces android.process.acore ustavil
I can swim.
I can move.

Pri preglasitvi metode morate biti pozorni tudi na uporabljeni modifikator dostopa. Modifikator v podrazredu mora imeti enako raven vidnosti ali višjo kot v osnovnem razredu. Na primer, če je metoda v osnovnem razredu definirana kot zaščiteno , potem je lahko metoda preglasitve bodisi zaščiteno ali javno .

Preprosta koda s polimorfizmom

Preglasitev in preobremenitev metode sta pomembna za poenostavitev kode, preprosta koda pa je dobra praksa.

Zakaj? Predstavljajte si zapleteno kodno bazo z več vmes in izhodi kot Grand Central Station. Zdaj pa si predstavljajte, da vam uničujoči hrošč pred očmi uničuje trdo delo. Izolirati morate vir okužbe in to storiti hitro.

Vso srečo, kode niste poenostavili ... Zdaj boste dobili pravo lekcijo iz kriptografije. Uporaba učinkovitih podatkovnih struktur in vse, kar je v vaši moči, da skrajšate kodo (na primer imejte DRY v mislih), je vaša najboljša obramba pred takšno situacijo.

Naslednji na vašem seznamu učenja Java bi moral biti delo z matrikami. So pomembne podatkovne strukture, ki se uporabljajo za shranjevanje serij podatkovnih točk.

Deliti Deliti Cvrkutati E-naslov Kako ustvariti in izvesti operacije nad nizi v Javi

Se učite Jave? Naj matrike z lahkoto ravnajo z vašimi podatki.

Preberite Naprej
Sorodne teme
  • Programiranje
  • Java
  • Vadnice za kodiranje
O avtorju Jerome Davidson(22 objavljenih člankov)

Jerome je osebni pisatelj pri MakeUseOf. Zajema članke o programiranju in Linuxu. Je tudi navdušenec nad kripto kripto in vedno spremlja kripto industrijo.

Več od Jeroma Davidsona

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti