Polymorfizmus v Jave: Ako metódy preťažiť alebo prepísať

Polymorfizmus v Jave: Ako metódy preťažiť alebo prepísať

Preťaženie a prepísanie metódy sú dva spôsoby, ktorými Java demonštruje polymorfizmus. Polymorfizmus pochádza z kombinácie dvoch gréckych slov: „poly“ znamená veľa a „morph“ znamená tvar. Polymorfizmus preto umožňuje, aby metódy mali mnoho foriem.





Podľa tejto príručky sa naučíte, ako preťažiť alebo prepísať metódy v Jave.





Čo je to preťaženie metódy?

„Preťaženie metódy“ sa týka definovania rôznych metód v triede s rovnakým názvom. Metódy musia mať rôzne podpisy. Podpis metódy je kombináciou názvu metódy a zoznamu parametrov. Neobsahuje typ vrátenia.





Kompilátor vie, akú metódu použiť, a to tak, že skontroluje typ, počet parametrov a poradie, v ktorom sú umiestnené.

Súvisiace: Skúmanie dedičnosti v programovacom jazyku Java



Preťaženie metódy demonštruje polymorfizmus v čase kompilácie. Polymorfizmus v čase kompilácie znamená, že kompilátor Java viaže objekt na jeho funkčnosť za behu. Kompilátor kontroluje podpisy metód, aby to dosiahol.

Tento typ polymorfizmu je známy aj ako statická alebo skorá väzba.





Pozrite sa na príklad preťaženia metódy nižšie:

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ýkon:





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

Vyššie uvedený kód ukazuje, ako môžete získať kocku rôznych typov ( int , dvojnásobok , plavák ) pomocou rovnakej metódy.

Na definovanie podobných metód s rôznymi typmi parametrov sa vo všeobecnosti používa preťaženie metódy.

Čo je metóda prevažujúca?

Toto sa týka odlišnej implementácie metódy v podtriede. Metóda už musela byť definovaná v rodičovskej triede.

Prevažujúca metóda (t. J. Metóda v podtriede) musí mať rovnaký podpis metódy ako v nadtriede. Návratový typ prevažujúcej metódy môže byť rovnaký alebo podtyp toho, ktorý je v nadtriede.

Prepísanie sa spravidla používa na zahrnutie konkrétnej implementácie správania objektu v podtriede.

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ýkon:

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!

Vyššie uvedený príklad ukazuje, ako metóda správa () je prepísaný v podtriedach Úspory a Viazaný vklad . Majiteľom bankových účtov so sporiacim účtom a správcom účtu s pevným vkladom sa zobrazia rôzne správy.

Súvisiace: Čo potrebujete vedieť o používaní reťazcov v Jave

Za zmienku tiež stojí, že prepísanie metódy demonštruje behu polymorfizmu alebo odosielania dynamických metód. To znamená, že volaná metóda je vyriešená skôr za behu než pri kompilácii.

Ak sa chcete vyhnúť prepísaniu metódy, použite kľúčové slovo finálny .

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

Keď sa podtrieda pokúsi prepísať, dôjde k chybe kompilácie.

V ideálnom prípade by mali byť všetky metódy nazývané v konštruktéri finálny . Toto má zabrániť akýmkoľvek neúmyselným zmenám, ktoré môžu byť spôsobené podtriedami.

Niekedy môže byť v rámci prepísanej metódy potrebné pristupovať k prepísanej metóde. Môžete použiť kľúčové slovo Super nasleduje operátor bodiek ( . ) a v takom prípade názov metódy.

Zvážte nadtriedu Zviera .

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

Nasleduje podtrieda, tzv Ryby , to má prednosť pohnúť sa () :

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ýkon:

dajú sa hrať hry ps4 na ps5
I can swim.
I can move.

Pri prepísaní metódy musíte tiež pamätať na použitý modifikátor prístupu. Modifikátor v podtriede by mal mať rovnakú úroveň viditeľnosti alebo vyššiu ako v základnej triede. Ak je napríklad metóda v základnej triede definovaná ako chránené , potom môže byť prevažujúca metóda buď chránené alebo verejná .

Jednoduchý kód s polymorfizmom

Prepísanie a preťaženie metódy sú dôležité pre zjednodušenie kódu a jednoduchý kód je osvedčený postup.

Prečo? Predstavte si komplexnú základňu kódov s viac vstupmi a výstupmi ako na Grand Central Station. Teraz si predstavte, ako vám ničivá chyba začne ničiť vašu tvrdú prácu pred očami. Musíte izolovať zdroj infekcie a musíte to urobiť rýchlo.

Veľa šťastia, nezjednodušili ste kód ... Teraz sa chystáte získať skutočnú lekciu kryptografie. Využívanie efektívnych dátových štruktúr a robenie všetkého, čo je v ich silách, na skrátenie kódu (napríklad na mysli DRY) je vašou najlepšou obranou proti situácii, ako je táto.

Ďalej vo vašom zozname učenia Java by mala pracovať s poľami. Sú to dôležité dátové štruktúry používané na ukladanie dávok dátových bodov.

zdieľam zdieľam Tweet E -mail Ako vytvárať a vykonávať operácie na poliach v Jave

Učíte sa Javu? Nechajte polia ľahko pracovať s vašimi údajmi.

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Java
  • Návody na kódovanie
O autorovi Jerome Davidson(22 publikovaných článkov)

Jerome je spisovateľ štábu v MakeUseOf. Venuje sa článkom o programovaní a Linuxe. Je tiež nadšencom kryptomien a vždy má prehľad o kryptospracujúcom priemysle.

Viac od Jerome Davidsona

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber