Преоптерећење Јава методе (са примерима)

У овом чланку ћете научити о преоптерећењу метода и како то можете постићи у Јави уз помоћ примера.

У Јави две или више метода могу имати исто име ако се разликују у параметрима (различит број параметара, различити типови параметара или оба). Ове методе се називају преоптерећеним методама, а ова карактеристика назива се преоптерећењем метода. На пример:

 воид фунц () (…) воид фунц (инт а) (…) флоат фунц (доубле а) (…) флоат фунц (инт а, флоат б) (…)

Овде је func()метода преоптерећена. Ове методе имају исто име, али прихватају различите аргументе.

Напомена : Типови поврата горе наведених метода нису исти. То је зато што преоптерећење метода није повезано са типовима повратка. Преоптерећене методе могу имати исти или различити тип повратка, али се морају разликовати у параметрима.

Зашто преоптерећење метода?

Претпоставимо да морате извршити сабирање задатих бројева, али може бити било који број аргумената (рецимо 2 или 3 аргумента ради једноставности).

Да бисте извршили задатак, можете створити две методе sum2num(int, int)и то sum3num(int, int, int)за два, односно за три параметра. Међутим, други програмери, као и ви, у будућности се могу збунити јер је понашање обе методе исто, али се разликују по имену.

Бољи начин за постизање овог задатка је преоптерећењем метода. И, у зависности од прослеђеног аргумента, позива се једна од преоптерећених метода. Ово помаже повећању читљивости програма.

Како извршити преоптерећење метода у Јави?

Ево различитих начина за преоптерећење метода:

1. Преоптерећење променом броја аргумената

 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); ) )

Излаз :

 Аргументи: 1 Аргументи: 1 и 4

2. Променом типа података параметара

 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"); ) ) 

Излаз :

Добио сам целобројне податке. Добио сам Стринг објект.

Овде обе преоптерећене методе прихватају један аргумент. Међутим, један прихвата аргумент типа, intдок други прихвата Stringобјекат.

Погледајмо пример из стварног света:

 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")); ) )

Када покренете програм, излаз ће бити:

 500 89.993 550,00

Напомена : У Јави такође можете преоптеретити конструкторе на сличан начин попут метода.

Препоручено читање: Преоптерећење Јава конструктора

Важне тачке

  • Две или више метода могу имати исто име у истој класи ако прихватају различите аргументе. Ова карактеристика је позната као преоптерећење метода.
  • Преоптерећење методе постиже се било којим:
    • промена броја аргумената.
    • или промена типа података аргумената.
  • Није преоптерећење метода ако променимо само повратни тип метода. Мора да постоје разлике у броју параметара.

Занимљиви Чланци...