Prednosti i nedostaci metode preopterećenja u Javi

Preopterećene metode su metode u istoj klasi koje dijele isto ime, ali prihvaćaju različite tipove varijabli kao argumente. Na primjer, klasa može sadržavati dvije različite metode "dodaj": jednu koja prihvaća dvije dvostruke vrijednosti, "add (double a, double b)" i jednu koja prihvaća dvije cjelobrojne vrijednosti, "dodaj (int a, int b)." Računalo automatski odlučuje koju će metodu pozvati tijekom izvođenja na temelju tipova varijabli koje se prosljeđuju metoda.

Fleksibilnost

Preopterećene metode daju programerima fleksibilnost pozivanja slične metode za različite vrste podataka. Ako radite na matematičkom programu, na primjer, mogli biste koristiti preopterećenje za stvaranje nekoliko "množećih" klasa, od kojih svaki množi različit broj tipa argumenta: najjednostavniji "množi (int a, int b)" množi dva cijeli brojevi; kompliciranija metoda "množi (double a, int b, int c)" množi jedan dvostruki s dva cijela broja - tada biste mogli pozovite "multiply" na bilo koju kombinaciju varijabli za koju ste stvorili preopterećenu metodu i primite ispravan rezultat.

Video dana

Konstruktori

Preopterećenje se također koristi na konstruktorima za stvaranje novih objekata s različitim količinama podataka. Na primjer, možete koristiti preopterećenje za stvaranje tri različita konstruktora za objekt "Kuća" s kućnim brojem, imenom ulice i varijablama boje. Najjednostavniji konstruktor "House()" ne uzima argumente i stvara kuću sa zadanim ili praznim varijablama. Složeniji konstruktor, "Kuća (int houseNumber, String streetName)" stvara kuću s navedenim kućnim brojem i nazivom ulice, ali zadanom ili praznom bojom. Najsloženiji konstruktor, "Kuća (int houseNumber, String streetName, String color)" stvara kuću sa svim navedenim informacijama, ne ostavljajući ništa kao zadano. Tada biste mogli stvoriti objekt kuće na temelju trenutno dostupnih informacija, s nedostupnim informacijama ostavljenim praznim ili prema zadanim postavkama.

Dvosmislene reference

Preopterećene metode moraju koristiti različite brojeve ili vrste argumenata kako bi se izbjegla dvosmislenost. Ako stvorite dvije metode u istoj klasi koje imaju isto ime i prihvaćaju dva cijela broja kao argumente, Java prevodilac neće moći razlikovati to dvoje, čak i ako ulazne varijable imaju različita imena. Na primjer, metoda "add (int a, int b)" ne može postojati u istoj klasi kao metoda "add (int c, int d)".

Vrste povrata

Morate definirati vrstu povrata za svaku preopterećenu metodu. Metode mogu imati različite vrste povrata - na primjer, "add (int a, int b)" može vratiti cijeli broj, dok "add (double a, double b)" vraća dvostruki. Međutim, Java ne može razlikovati dvije različite metode na temelju njihovog tipa povrata. Stoga "int multiply (double a, double b)" ne može postojati u istoj klasi kao "double multiply (double a, double b)".