Skip to main content

Vad är överbelastning av funktion?

Överbelastning av funktion är en funktion i många programmeringsspråk där flera metoder kan skapas med samma namn men med olika inmatningsparametrar eller returtyper.Detta är ett vanligt inslag i objektorienterad programmering;Särskilt konstruktörer kan ha flera olika överbelastade varianter.I huvudsak är funktionsöverbelastning användbar när två funktioner gör mycket liknande saker och kan ta flera typer av input för att göra det.Konstruktörer kan enkelt överbelastas eftersom de inte har någon uttrycklig returtyp specificerad, så att helt enkelt ändra ingångsparametrarna för en konstruktör skulle vara giltig överbelastning.

Det första sättet på vilket en funktion kan överbelastas är genom att ändra dess inmatningsparametrar.Till exempel kan man överväga en funktion som heter ADD som tar som dess inmatning två hela siffror.Syftet med denna funktion är ganska uppenbart;Det är tänkt att hitta summan av två hela siffror.

Om man ville hitta summan av två flottörer eller decimalnummer, skulle dock denna funktion inte vara tillämplig.Så en andra överbelastad funktion skulle vara nödvändig, definierad som en funktion som kallas tillägg som tar som dess inmatning två flottörer.Funktionerna gör i huvudsak samma sak, men överbelastning av funktion är nödvändig eftersom deras ingångar är betydligt olika.

Det andra sättet på vilket en funktion kan överbelastas är att ändra både dess inmatningsparametrar och dess returtyp.Med det föregående exemplet kan man överväga om båda överbelastade tilläggsfunktioner hade en tomrumstyp;Det vill säga, de returnerade ingenting.Detta skulle fortfarande vara giltig funktionsöverbelastning, men returtyperna för de två metoderna kan också ändras.I en annan giltig instans av överbelastning kan tilläggsfunktionen som tar två hela siffror returnera hela nummersumman, och tilläggsfunktionen som tar två decimalnummer kan returnera det decimalnummer summan.

Att helt enkelt ändra returtypen för en funktion, dock, anses inte vara giltig funktionsöverbelastning.Att bara ändra returtypen för en funktion resulterar i tvetydighet, eftersom det inte är klart från metodsignaturen vilken returtyp som önskas.Parametrar kan också definieras tvetydigt, så det är mycket viktigt för överbelastade funktioner att kallas korrekt.Till exempel, om man har en överbelastad funktion som har ett helt nummer som sin inmatningsparameter, och en annan som har ett decimalnummer som en parameter, skulle det vara mycket enkelt för någon att av misstag ringa decimalnummerfunktionen istället för funktionen för hela nummer, eller vice versa, eftersom de har samma namn.Tvetydiga parametrar som dessa bör undvikas om möjligt, och om de inte kan vara, bör stor försiktighet vidtas för att säkerställa att den korrekta överbelastade funktionen kallas vid rätt tider.

Funktion Överbelastning är användbar för att skapa relaterade funktioner med olika inmatningstyper, och det ger kod mycket flexibilitet.En sista övervägande på överbelastade funktioner är att adekvat kommentar är avgörande.Även om det kan vara tydligt genom olika inmatningsparametrar vilken version av en överbelastad funktion som är rätt för en viss situation, kanske det inte alltid är tydligt exakt vad funktionen gör annorlunda än dess andra överbelastade partners.