Preopterećenje Java metode (s primjerima)

U ovom ćete članku naučiti o preopterećenju metoda i kako to možete postići u Javi uz pomoć primjera.

U Javi dvije ili više metoda mogu imati isti naziv ako se razlikuju u parametrima (različit broj parametara, različite vrste parametara ili oboje). Te se metode nazivaju preopterećenim metodama, a ta se značajka naziva preopterećenjem metoda. Na primjer:

 void func () (…) void func (int a) (…) float func (double a) (…) float func (int a, float b) (…)

Ovdje je func()metoda preopterećena. Ove metode imaju isti naziv, ali prihvaćaju različite argumente.

Napomena : Vrste povrata gore navedenih metoda nisu iste. To je zato što preopterećenje metode nije povezano s vrstama povratka. Preopterećene metode mogu imati iste ili različite tipove povrata, ali moraju se razlikovati u parametrima.

Zašto preopterećenje metode?

Pretpostavimo da morate izvršiti zbrajanje zadanih brojeva, ali može postojati bilo koji broj argumenata (recimo 2 ili 3 argumenta radi jednostavnosti).

Da biste izvršili zadatak, možete stvoriti dvije metode, sum2num(int, int)odnosno sum3num(int, int, int)dva i tri parametra. Međutim, drugi programeri, kao i vi, u budućnosti se mogu zbuniti jer je ponašanje obje metode isto, ali se razlikuju po imenu.

Bolji način za postizanje ovog zadatka je preopterećenjem metoda. I, ovisno o prosljeđenom argumentu, poziva se jedna od preopterećenih metoda. To pomaže povećati čitljivost programa.

Kako izvesti preopterećenje metoda u Javi?

Evo različitih načina za preopterećenje metoda:

1. Preopterećenje promjenom broja argumenata

 class MethodOverloading ( private static void display(int a)( System.out.println("Arguments: " + a); ) private static void display(int a, int b)( System.out.println("Arguments: " + a + " and " + b); ) public static void main(String() args) ( display(1); display(1, 4); ) )

Izlaz :

 Argumenti: 1 Argumenti: 1 i 4

2. Promjenom vrste podataka parametara

 class MethodOverloading ( // this method accepts int private static void display(int a)( System.out.println("Got Integer data."); ) // this method accepts String object private static void display(String a)( System.out.println("Got String object."); ) public static void main(String() args) ( display(1); display("Hello"); ) ) 

Izlaz :

Dobio sam cjelovite podatke. Dobio sam String objekt.

Ovdje obje preopterećene metode prihvaćaju jedan argument. Međutim, jedan prihvaća argument tipa, intdok drugi prihvaća Stringobjekt.

Pogledajmo primjer iz stvarnog svijeta:

 class HelperService ( private String formatNumber(int value) ( return String.format("%d", value); ) private String formatNumber(double value) ( return String.format("%.3f", value); ) private String formatNumber(String value) ( return String.format("%.2f", Double.parseDouble(value)); ) public static void main(String() args) ( HelperService hs = new HelperService(); System.out.println(hs.formatNumber(500)); System.out.println(hs.formatNumber(89.9934)); System.out.println(hs.formatNumber("550")); ) )

Kada pokrenete program, izlaz će biti:

 500 89.993 550,00

Napomena : U Javi također možete preopteretiti konstruktore na sličan način poput metoda.

Preporučeno čitanje: Preopterećenje Java konstruktora

Važne točke

  • Dvije ili više metoda mogu imati isti naziv unutar iste klase ako prihvaćaju različite argumente. Ova je značajka poznata kao preopterećenje metode.
  • Preopterećenje metode postiže se bilo kojim:
    • promjena broja argumenata.
    • ili promjena vrste podataka argumenata.
  • Nije preopterećenje metoda ako promijenimo samo vrstu povratka metoda. Sigurno postoje razlike u broju parametara.

Zanimljivi članci...