Výhody a nevýhody metódy preťaženia v Jave

Preťažené metódy sú metódy v rovnakej triede, ktoré zdieľajú rovnaký názov, ale akceptujú rôzne typy premenných ako argumenty. Trieda môže napríklad obsahovať dve rôzne metódy „add“: jednu, ktorá akceptuje dve dvojité hodnoty, „add (double a, double b)“ a jednu, ktorá akceptuje dve hodnoty. celočíselné hodnoty, "add (int a, int b)." Počítač sa automaticky rozhodne, ktorú metódu zavolá za behu na základe typov premenných, ktoré sa odovzdávajú metóda.

Flexibilita

Preťažené metódy poskytujú programátorom flexibilitu volať podobnú metódu pre rôzne typy údajov. Ak napríklad pracujete na matematickom programe, môžete použiť preťaženie na vytvorenie niekoľkých „násobných“ tried, z ktorých každý násobí iný počet typov argumentov: najjednoduchšie "násobenie (int a, int b)" násobí dva celé čísla; komplikovanejšia metóda "násobiť (double a, int b, int c)" vynásobí jeden dvojnásobok dvoma celými číslami - potom môžete zavolajte "multiply" pre akúkoľvek kombináciu premenných, pre ktorú ste vytvorili preťaženú metódu, a získajte správny výsledok.

Video dňa

Konštruktéri

Preťaženie sa používa aj na konštruktoroch na vytváranie nových objektov s rôznym množstvom údajov. Preťaženie môžete napríklad použiť na vytvorenie troch rôznych konštruktorov pre objekt „Dom“ s číslom domu, názvom ulice a farebnými premennými. Najjednoduchší konštruktor "House()" neberie žiadne argumenty a vytvára dom s predvolenými alebo prázdnymi premennými. Zložitejší konštruktor „House (int houseNumber, String streetName)“ vytvorí dom so zadaným číslom domu a názvom ulice, ale predvolenou alebo prázdnou farbou. Najkomplexnejší konštruktor „Dom (int houseNumber, String streetName, String color)“ vytvorí dom so všetkými zadanými informáciami, pričom neponechá nič ako predvolené. Potom by ste mohli vytvoriť objekt domu na základe aktuálne dostupných informácií, pričom nedostupné informácie ponechajte prázdne alebo v predvolenom nastavení.

Nejednoznačné referencie

Preťažené metódy musia používať rôzne počty alebo typy argumentov, aby sa predišlo nejednoznačnosti. Ak vytvoríte dve metódy v rovnakej triede, ktoré majú rovnaký názov a akceptujú dve celé čísla ako argumenty, Kompilátor Java nebude schopný rozlíšiť medzi nimi, aj keď vstupné premenné majú rôzne názvy. Napríklad metóda „add (int a, int b)“ nemôže existovať v rovnakej triede ako metóda „add (int c, int d).“

Typy vrátenia

Pre každú preťaženú metódu musíte definovať návratový typ. Metódy môžu mať rôzne typy návratov – napríklad „add (int a, int b)“ môže vrátiť celé číslo, zatiaľ čo „add (double a, double b)“ vráti double. Java však nedokáže rozlíšiť dve rôzne metódy na základe ich typu návratu. Preto „int multiply (double a, double b)“ nemôže existovať v rovnakej triede ako „double multiply (double a, double b).“