Skip to main content

Co to jest przeciążenie funkcji?

Przeciążenie funkcji jest funkcją wielu języków programowania, w których można tworzyć wiele metod o tej samej nazwie, ale z różnymi parametrami wejściowymi lub typami zwrotu.Jest to wspólna funkcja programowania obiektowego;W szczególności konstruktory mogą mieć wiele różnych przeciążonych wariantów.Zasadniczo przeciążenie funkcji jest przydatne, gdy dwie funkcje wykonują bardzo podobne rzeczy i mogą wymagać wielu rodzajów danych wejściowych.Konstruktorzy mogą być łatwo przeciążone, ponieważ nie mają określonego typu zwracania jawnego, więc po prostu zmiana parametrów wejściowych konstruktora byłaby poprawnym przeciążeniem.

Pierwszym sposobem przeciążenia funkcji jest zmiana parametrów wejściowych.Na przykład można rozważyć funkcję o nazwie Add, która przyjmuje jako wejście dwie liczby całościowe.Cel tej funkcji jest dość oczywisty;Ma to znaleźć sumę dwóch liczb całkowitych.

Gdyby ktoś chciał znaleźć sumę dwóch pływaków lub liczb dziesiętnych, jednak ta funkcja nie miałaby zastosowania.Tak więc konieczna byłaby druga przeciążona funkcja, zdefiniowana jako funkcja o nazwie Add, która przyjmuje jako wejście dwa pływaki.Funkcje działają zasadniczo tym samym, ale przeciążenie funkcji jest konieczne, ponieważ ich dane wejściowe są znacząco różne.

Drugim sposobem przeciążenia funkcją jest zmiana zarówno parametrów wejściowych, jak i typu powrotu.Korzystając z poprzedniego przykładu, można rozważyć, czy oba przeciążone funkcje dodawania miały typ zwrotny;Oznacza to, że nic nie zwrócili.Nadal byłoby to prawidłowe przeciążenie funkcji, ale typy powrotu dwóch metod można również zmienić.W innym ważnym przypadku przeciążenia funkcja dodawania, która przyjmuje dwie liczby całkowitą, może zwrócić tę liczbę całkowitą, a funkcja dodawania, która wymaga dwóch liczb dziesiętnych, może zwrócić tę liczbę dziesiętną.

Wystarczy zmienić typ zwrotu funkcji, jednak, nie jest uważane za prawidłowe przeciążenie funkcji.Zmiana tylko typu powrotu funkcji powoduje dwuznaczność, ponieważ nie jest to jasne z podpisu metody, która jest pożądana.Parametry można również zdefiniować niejednoznacznie, więc bardzo ważne jest, aby poprawnie wywołać funkcje przeciążone.Na przykład, jeśli jedna ma przeciążoną funkcję, która ma liczbę całkowitą jako parametr wejściowy, a druga, która ma liczbę dziesiętną jako parametr, byłoby bardzo łatwe do przypadkowego wywołania funkcji liczby dziesiętnej zamiast funkcji liczby całkowitej, lub odwrotnie, ponieważ mają tę samą nazwę.Niejednoznaczne parametry, takie jak te, należy unikać, jeśli to możliwe, a jeśli nie mogą być, należy zachować wielką ostrożność, aby upewnić się, że właściwą przeciążoną funkcję jest wywoływana we właściwych czasach.

Przeciążenie funkcji jest przydatne do tworzenia powiązanych funkcji z różnorodnymi typami wejściowymi, i daje kodowi dużą elastyczność.Ostatnim rozważeniem funkcji przeciążonych jest to, że niezbędne jest odpowiednie komentowanie.Chociaż może to być jasne przez różne parametry wejściowe, jaką wersję przeciążonej funkcji jest odpowiednia dla określonej sytuacji, nie zawsze jest jasne dokładnie, co funkcja robi inaczej od innych przeciążonych partnerów.