Skip to main content

Wat is het overbelasten van functies?

Functieoverbelasting is een functie van veel programmeertalen waarbij meerdere methoden met dezelfde naam kunnen worden gemaakt, maar met verschillende invoerparameters of retourtypen.Dit is een gemeenschappelijk kenmerk in objectgeoriënteerde programmering;Vooral constructeurs kunnen meerdere verschillende overbelaste varianten hebben.In wezen is het overbelasten van functies handig wanneer twee functies zeer vergelijkbare dingen doen en daarvoor meerdere soorten invoer kunnen nemen.Constructeurs kunnen eenvoudig worden overbelast omdat ze geen expliciet aangegeven retourtype hebben, dus eenvoudigweg het wijzigen van de invoerparameters van een constructor zou geldig overbelasting zijn.

De eerste manier waarop een functie kan worden overbelast, is door de invoerparameters te wijzigen.Men kan bijvoorbeeld een functie met de naam ADD beschouwen die als invoer twee hele getallen input.Het doel van deze functie is vrij duidelijk;Het is bedoeld om de som van twee hele getallen te vinden.

Als men de som van twee drijvers of decimale getallen zou willen vinden, zou deze functie echter niet van toepassing zijn.Dus, een tweede overbelaste functie zou nodig zijn, gedefinieerd als een functie genaamd ADD die als zijn invoer twee drijvers neemt.De functies doen in wezen hetzelfde, maar functieoverbelasting is noodzakelijk omdat hun ingangen aanzienlijk verschillen.

De tweede manier waarop een functie kan worden overbelast, is het wijzigen van zowel de invoerparameters als het retourtype.Met behulp van het vorige voorbeeld kan men overwegen of beide overbelaste add -functies een nietig retourtype hadden;Dat wil zeggen, ze hebben niets teruggebracht.Dit zou nog steeds een geldige overbelasting van de functie zijn, maar de retourtypen van de twee methoden kunnen ook worden gewijzigd.In een ander geldig exemplaar van overbelasting, kan de ADD -functie die twee hele getallen nodig heeft die hele getallensom retourneren, en de ADD -functie die twee decimale nummers nodig heeft, kan die decimale nummersom retourneren.

Simpelweg het retourtype van een functie wijzigen, maar eenvoudigweg wijzigen, wordt niet beschouwd als geldige functie -overbelasting.Alleen wijzigen van het retourtype van een functie resulteert in ambiguïteit, omdat het niet duidelijk is uit de handtekening van de methode welk retourtype gewenst is.Parameters kunnen ook dubbelzinnig worden gedefinieerd, dus het is erg belangrijk dat overbelaste functies correct worden aangeroepen.Als je bijvoorbeeld een overbelaste functie heeft die een heel getal heeft als de invoerparameter, en een andere met een decimaal nummer als parameter, zou het voor iemand heel eenvoudig zijn om per ongeluk de decimale nummerfunctie te noemen in plaats van de hele nummerfunctie, of vice versa, omdat ze dezelfde naam hebben.Ambiguante parameters zoals deze moeten indien mogelijk worden vermeden, en als ze dat niet kunnen zijn, moet er veel voorzichtig zijn om ervoor te zorgen dat de juiste overbelaste functie op de juiste tijden wordt aangeroepen.

Functie -overbelasting is handig voor het maken van gerelateerde functies met gevarieerde invoertypen, en het geeft code veel flexibiliteit.Een laatste overweging over overbelaste functies is dat voldoende commentaar essentieel is.Hoewel het misschien duidelijk is door verschillende invoerparameters te verschillende in welke versie van een overbelaste functie geschikt is voor een bepaalde situatie, is het misschien niet altijd duidelijk wat de functie anders doet dan de andere overbelaste partners.