Przeciążanie metod Java (z przykładami)

Z tego artykułu dowiesz się na przykładach o przeciążaniu metod i o tym, jak można to osiągnąć w Javie.

W Javie dwie lub więcej metod może mieć tę samą nazwę, jeśli różnią się parametrami (różną liczbą parametrów, różnymi typami parametrów lub obydwoma). Te metody są nazywane metodami przeciążonymi, a ta funkcja jest nazywana przeciążaniem metod. Na przykład:

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

Tutaj func()metoda jest przeciążona. Te metody mają tę samą nazwę, ale akceptują różne argumenty.

Uwaga : Zwracane typy powyższych metod nie są takie same. Dzieje się tak, ponieważ przeciążanie metod nie jest skojarzone z typami zwracanymi. Przeciążone metody mogą mieć te same lub różne typy zwracane, ale muszą różnić się parametrami.

Dlaczego przeciążanie metod?

Załóżmy, że musisz dodać podane liczby, ale może istnieć dowolna liczba argumentów (dla uproszczenia, powiedzmy, 2 lub 3 argumenty).

Aby wykonać zadanie, możesz utworzyć dwie metody sum2num(int, int)i odpowiednio sum3num(int, int, int)dla dwóch i trzech parametrów. Jednak inni programiści, a także Ty w przyszłości, mogą się zdezorientować, ponieważ zachowanie obu metod jest takie samo, ale różnią się nazwą.

Lepszym sposobem wykonania tego zadania jest przeciążenie metod. W zależności od przekazanego argumentu wywoływana jest jedna z przeciążonych metod. Pomaga to zwiększyć czytelność programu.

Jak wykonać przeciążenie metod w Javie?

Oto różne sposoby wykonywania przeciążania metod:

1. Przeciążanie przez zmianę liczby argumentów

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

Wyjście :

 Argumenty: 1 Argumenty: 1 i 4

2. Zmieniając typ danych parametrów

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

Wyjście :

Mam dane całkowite. Otrzymano obiekt String.

Tutaj obie przeciążone metody akceptują jeden argument. Jednak jeden akceptuje argument typu, intpodczas gdy inny akceptuje Stringobiekt.

Spójrzmy na przykład ze świata rzeczywistego:

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

Po uruchomieniu programu wynik będzie następujący:

 500 89,993 550,00

Uwaga : w Javie można również przeciążać konstruktory w podobny sposób, jak metody.

Zalecana lektura: Przeciążanie konstruktorów języka Java

Ważne punkty

  • Dwie lub więcej metod może mieć tę samą nazwę w tej samej klasie, jeśli akceptują różne argumenty. Ta funkcja jest znana jako przeciążanie metody.
  • Przeciążenie metody jest osiągane przez:
    • zmiana liczby argumentów.
    • lub zmieniając typ danych argumentów.
  • Nie jest to przeciążanie metod, jeśli zmieniamy tylko zwracany typ metod. Muszą istnieć różnice w liczbie parametrów.

Interesujące artykuły...