Přetížené metody jsou metody ve stejné třídě, které sdílejí stejný název, ale přijímají různé typy proměnných jako argumenty. Třída může například obsahovat dvě různé metody „add“: jednu, která přijímá dvě dvojité hodnoty, „add (double a, double b)“ a jednu, která přijímá dvě hodnoty. celočíselné hodnoty, "add (int a, int b)." Počítač se automaticky rozhodne, kterou metodu zavolá za běhu, na základě typů proměnných předávaných do metoda.
Flexibilita
Přetížené metody dávají programátorům flexibilitu volat podobnou metodu pro různé typy dat. Pokud například pracujete na matematickém programu, můžete přetížení použít k vytvoření několika „násobných“ tříd, z nichž každý násobí jiný počet typů argumentů: nejjednodušší "násobit (int a, int b)" násobí dva celá čísla; složitější metoda "násobit (double a, int b, int c)" vynásobí jeden dvojnásobek dvěma celými čísly - pak byste mohli zavolejte "multiply" pro jakoukoli kombinaci proměnných, pro kterou jste vytvořili přetíženou metodu, a obdržíte správný výsledek.
Video dne
Konstruktéři
Přetížení se také používá u konstruktérů k vytváření nových objektů s různým množstvím dat. Například můžete použít přetížení k vytvoření tří různých konstruktorů pro objekt "Dům" s číslem domu, názvem ulice a proměnnými barvy. Nejjednodušší konstruktor "House()" nebere žádné argumenty a vytváří dům s výchozími nebo prázdnými proměnnými. Složitější konstruktor „Dům (int houseNumber, String streetName)“ vytvoří dům se zadaným číslem domu a názvem ulice, ale s výchozí nebo prázdnou barvou. Nejsložitější konstruktor, "Dům (int houseNumber, String streetName, String color)," vytvoří dům se všemi zadanými informacemi, přičemž neponechá nic jako výchozí. Poté můžete vytvořit objekt domu na základě aktuálně dostupných informací, přičemž nedostupné informace zůstanou prázdné nebo ve výchozím nastavení.
Nejednoznačné reference
Přetížené metody musí používat různé počty nebo typy argumentů, aby se předešlo nejednoznačnosti. Pokud vytvoříte dvě metody ve stejné třídě, které mají stejný název a přijímají dvě celá čísla jako argumenty, bude Kompilátor Java mezi nimi nebude schopen rozlišit, i když mají vstupní proměnné různé názvy. Například metoda "add (int a, int b)" nemůže existovat ve stejné třídě jako metoda "add (int c, int d)."
Typy návratů
Pro každou přetíženou metodu musíte definovat návratový typ. Metody mohou mít různé návratové typy – například „add (int a, int b)“ může vrátit celé číslo, zatímco „add (double a, double b)“ vrátí double. Java však nedokáže rozlišit dvě různé metody na základě jejich návratového typu. Proto "int multiply (double a, double b)" nemůže existovat ve stejné třídě jako "double multiply (double a, double b)."