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 o różnych parametrach wejściowych lub typach zwrotnych. 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. Konstruktory można łatwo przeładować, ponieważ nie mają określonego typu zwracania wyraźnego, 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 „Dodaj”, 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.
Jeśli ktoś chciał znaleźć sumę dwóch pływaków lub liczb dziesiętnych, to FUNCTJon nie miałby zastosowania. Tak więc konieczna byłaby druga przeciążona funkcja, zdefiniowana jako funkcja o nazwie „Dodaj”, 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, w jaki można przeciążyć 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 „Dodaj” miały typ zwrotu pustki; 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 prawidłowym przypadku przeciążenia funkcja „dodaj”, która przyjmuje dwie liczby całkowitą, może zwrócić tę liczbę całkowitą, a funkcja „dodaj”, która przyjmuje dwie liczby dziesiętne, może zwrócić tę liczbę dziesiętną.
Po prostu zmiana typu powrotu OF Funkcja nie jest jednak uważana za prawidłowe przeciążenie funkcji. Zmiana tylko typu powrotu funkcji powoduje niejednoznaczność, 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 jeden ma przeciążoną funkcję, która ma liczbę całkowitą jako parametr wejściowy, a drugi, który 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 zapewnić, że właściwa przeciążona funkcja 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 kod dużą elastyczność. Ostatnia uwagaW przypadku przeciążonych funkcji 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.