Wat is het overbelasten van functies?

Functie -overbelasting 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. Constructors kunnen eenvoudig worden overbelast omdat ze geen expliciet retourtype hebben opgegeven, dus eenvoudigweg het wijzigen van de invoerparameters van een constructor zou geldig overbelasting zijn.

De eerste manier waarop een functie overbelast kan worden door de invoerparameters te wijzigen. Men kan bijvoorbeeld een functie beschouwen met de naam "ADD" die als invoer twee hele getallen als invoer neemt. 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 praalwagens of decimale getallen wilde vinden, is dit echter deze functieIon zou 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 overbelasting van functies is noodzakelijk omdat hun input aanzienlijk verschillen.

De tweede manier waarop een functie kan worden overbelast, is door zowel de invoerparameters als het retourtype te wijzigen. 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 getallen nodig heeft, kan die decimale nummersom retourneren.

Gewoon het retourtype wijzigen oF Een functie wordt echter niet beschouwd als geldige functie -overbelasting. Alleen wijzigen van het retourtype van een functie resulteert in dubbelzinnigheid, omdat het niet duidelijk is uit de methode -handtekening welk retourtype gewenst is. Parameters kunnen ook dubbelzinnig worden gedefinieerd, dus het is erg belangrijk dat overbelaste functies correct worden aangeroepen. Als iemand 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. Ambiguous parameters zoals deze moeten indien mogelijk worden vermeden, en als ze niet kunnen zijn, moet er veel zorg worden besteed 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 input -typen en het geeft code veel flexibiliteit. Nog een laatste overwegingOver overbelaste functies is dat voldoende commentaar essentieel is. Hoewel het misschien duidelijk is door verschillende invoerparameters te verschillende welke versie van een overbelaste functie goed is voor een bepaalde situatie, is het misschien niet altijd duidelijk wat de functie anders doet dan de andere overbelaste partners.

ANDERE TALEN