Zalety i wady metody przeciążania w Javie

Metody przeciążone to metody w tej samej klasie, które mają tę samą nazwę, ale akceptują różne typy zmiennych jako argumenty. Na przykład klasa może zawierać dwie różne metody „add”: jedną, która akceptuje dwie wartości podwójne, „add (double a, double b)” i jedną, która akceptuje dwie wartości całkowite, „dodaj (int a, int b).” Komputer automatycznie decyduje, którą metodę wywołać w czasie wykonywania na podstawie typów zmiennych przekazywanych do metoda.

Elastyczność

Przeciążone metody dają programistom elastyczność w wywoływaniu podobnej metody dla różnych typów danych. Jeśli na przykład pracujesz nad programem matematycznym, możesz użyć przeciążania, aby utworzyć kilka klas „pomnóż”, z których każdy mnoży inną liczbę typu argumentu: najprostsze „mnożenie (int a, int b)” mnoży dwa liczby całkowite; bardziej skomplikowana metoda "mnożenie (podwójne a, int b, int c)" mnoży jedną podwójną przez dwie liczby całkowite -- możesz wtedy wywołaj "mnożenie" na dowolnej kombinacji zmiennych, dla której utworzyłeś przeciążoną metodę i otrzymaj właściwy wynik.

Wideo dnia

Konstruktorzy

Przeciążanie jest również stosowane w konstruktorach do tworzenia nowych obiektów przy różnych ilościach danych. Na przykład, możesz użyć przeciążenia, aby utworzyć trzy różne konstruktory dla obiektu „Dom” z numerem domu, nazwą ulicy i zmiennymi koloru. Najprostszy konstruktor „House()” nie przyjmuje żadnych argumentów i tworzy dom z domyślnymi lub pustymi zmiennymi. Bardziej złożony konstruktor „Dom (wew.numer domu, ciąg nazwa_ulicy)” tworzy dom z określonym numerem domu i nazwą ulicy, ale z domyślnym lub pustym kolorem. Najbardziej złożony konstruktor, „Dom (wew.numer domu, ciąg nazwa ulicy, kolor ciągu)” tworzy dom ze wszystkimi określonymi informacjami, nie pozostawiając niczego jako domyślnego. Następnie możesz utworzyć obiekt domu na podstawie aktualnie dostępnych informacji, z niedostępnymi informacjami pozostawionymi pustymi lub domyślnymi.

Niejednoznaczne odniesienia

Przeciążone metody muszą używać różnych liczb lub typów argumentów, aby uniknąć niejednoznaczności. Jeśli utworzysz dwie metody w tej samej klasie, które mają tę samą nazwę i zaakceptujesz dwie liczby całkowite jako argumenty, Kompilator Java nie będzie w stanie odróżnić tych dwóch, nawet jeśli zmienne wejściowe mają różne nazwy. Na przykład metoda „add (int a, int b)” nie może istnieć w tej samej klasie co metoda „add (int c, int d).”

Typy zwrotu

Musisz zdefiniować zwracany typ dla każdej przeciążonej metody. Metody mogą mieć różne typy zwracane — na przykład „add (int a, int b)” może zwrócić liczbę całkowitą, a „add (double a, double b)” zwraca wartość double. Jednak Java nie może rozróżnić dwóch różnych metod na podstawie ich typu zwracanego. Dlatego „int mnożenia (podwójne a, podwójne b)” nie może istnieć w tej samej klasie co „podwójne mnożenie (podwójne a, podwójne b)”).