Metóda preťaženia a prepísania 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 podôb.
Podľa tohto sprievodcu sa dozviete, ako preťažiť alebo prekonať metódy v prostredí Java.
Čo je to preťaženie metódy?
„Preťaženie metód“ sa vzťahuje na definovanie 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. Nezahŕňa návratový typ.
Kompilátor vie, ktorú metódu má použiť, a to kontrolou typu, počtu parametrov a poradia, v akom sú umiestnené.
Súvisiace: Skúmanie dedičnosti v programovacom jazyku Java
Preťaženie metód demonštruje polymorfizmus v čase kompilácie. Polymorfizmus v čase kompilácie znamená, že kompilátor Java viaže objekt na svoju funkčnosť za behu programu. Kompilátor na dosiahnutie tohto cieľa kontroluje podpisy metód.
Tento typ polymorfizmu je tiež známy ako statická alebo skorá väzba.
Nižšie si pozrite príklad preťaženia metódy:
trieda Aritmetika {
int kocka (int x) {
návrat x * x * x;
}
dvojitá kocka (dvojitá x) {
návrat x * x * x;
}
float cube (float x) {
návrat x * x * x;
}
public static void main (String [] args) {
Aritmetická myMultiplication = nová Aritmetika ();
System.out.println ("Kocka 5 je" + myMultiplication.cube (5));
System.out.println ("Kocka verzie 5.0 je" + myMultiplication.cube (5.0));
System.out.println ("Kocka 0,5 je" + myMultiplication.cube (0,5));
}
}
Výkon:
Kocka 5 je 125
Kocka 5,0 je 125,0
Kocka 0,5 je 0,125
Vyššie uvedený kód ukazuje, ako môžete získať kocku rôznych typov (int, dvojitý, plavák) rovnakou metódou.
Všeobecne sa preťaženie metód používa na definovanie podobných metód s rôznymi typmi parametrov.
Čo je prevažujúca metóda?
Toto sa týka inej implementácie metódy v podtriede. Metóda musí byť už definovaná v nadradenej triede.
Prepísaná metóda (t. J. Metóda v podtriede) musí mať rovnaký podpis metódy ako v nadtriede. Návratový typ metódy prepísania môže byť rovnaký alebo podtyp ako v nadtriede.
Prepísanie sa zvyčajne používa na zahrnutie konkrétnej implementácie správania objektu do podtriedy.
účet triedy {
public void message () {
System.out.println ("
Ďakujeme, že ste si u nás otvorili účet! ");
}
public static void main (String args []) {
Účet myAccount = nový účet ();
Úspory mySavings = nové Úspory ();
FixedDeposit myFixedDepo = nový FixedDeposit ();
myAccount.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
trieda sporenia rozširuje účet {
public void message () {
System.out.println ("
Ďakujeme, že ste si u nás otvorili sporiaci účet! “);
}
}
trieda FixedDeposit rozširuje účet {
public void message () {
System.out.println ("
Ďakujeme, že ste si u nás otvorili účet s pevným vkladom! ");
}
}
Výkon:
Ďakujeme, že ste si u nás otvorili účet!
Ďakujeme, že ste si u nás otvorili sporiaci účet!
Ďakujeme, že ste si u nás otvorili účet s pevným vkladom!
Vyššie uvedený príklad ukazuje, ako metóda správa () je prepísaný v podtriedach Úspory a Viazaný vklad. Odlišné správy sa budú zobrazovať majiteľom bankových účtov so sporiacim účtom a správcom s účtom s pevným vkladom.
Súvisiace: Čo potrebujete vedieť o používaní reťazcov v jazyku Java
Je tiež potrebné poznamenať, že prepísanie metódy demonštruje runtime polymorfizmus alebo odoslanie dynamickej metódy. To znamená, že metóda, ktorá sa má volať, je vyriešená skôr za behu ako pri kompilácii.
Ak sa chcete vyhnúť prepísaniu metódy, použite kľúčové slovo konečné.
správa o konečnej neplatnosti () {
System.out.println ("
Ďakujeme, že ste si u nás otvorili účet! ");
}
Keď sa podtrieda pokúsi prepísať, vyskytne sa chyba kompilácie.
V ideálnom prípade by mali byť všetky metódy volané v rámci konštruktora konečné. Týmto sa zabráni akýmkoľvek neúmyselným zmenám, ktoré môžu byť spôsobené podtriedami.
V niektorých prípadoch bude možno potrebné prejsť k prepísanej metóde. Môžete použiť kľúčové slovo Super nasledovaný bodkovým operátorom (.) a názov metódy v takom prípade.
Zvážte nadtriedu Zviera.
trieda Zviera {
tah verejnej neplatnosti () {
System.out.println ("
Môžem sa hýbať. “);
}
}
Nižšie je uvedená podtrieda, tzv Ryby, ktorý má prednosť presunúť ():
trieda Fish rozširuje Animal {
tah verejnej neplatnosti () {
System.out.println ("
Viem plávať.");
super.move ();
}
public static void main (String args []) {
Fish Tilapia = nová ryba ();
Tilapia.move ();
}
}
Výkon:
Viem plávať.
Môžem sa hýbať.
Pri prepísaní metódy musíte 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. Napríklad ak je metóda v základnej triede definovaná ako chránené, potom môže byť prvoradá metóda buď chránené alebo verejné.
Jednoduchý kód s polymorfizmom
Prepísanie metódy a preťaženie sú dôležité pre zjednodušenie kódu a jednoduchý kód je osvedčeným postupom.
Prečo? Predstavte si zložitú základňu kódov s väčším počtom vstupov a výstupov ako na stanici Grand Central. Teraz si predstavte, že ničivá chyba začne ničiť vašu tvrdú prácu pred vašimi očami. Musíte izolovať zdroj infekcie a musíte to urobiť rýchlo.
Veľa šťastia, svoj kód ste nezjednodušili... Teraz sa chystáte dostať skutočnú lekciu v kryptografii. Najlepšou obranou proti situácii, ako je táto, je využitie efektívnych dátových štruktúr a maximálne možné skrátenie kódu (napríklad udržiavanie DRY v pamäti).
Ďalej vo vašom zozname výučby Java by mala byť práca s poľami. Sú to dôležité dátové štruktúry používané na ukladanie dávok dátových bodov.
Učíš sa Javu? Umožnite poľom ľahko spracovať vaše údaje.
Prečítajte si Ďalej
- Programovanie
- Java
- Výukové programy pre kódovanie
Jerome je redaktorom štábu v MakeUseOf. Venuje sa témam o programovaní a Linuxe. Je tiež nadšencom kryptomien a neustále sleduje vývoj v kryptomene.
Prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!
Ešte jeden krok…!
V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.