Vad är överbelastning av funktion?
Funktionsöverbelastning är en funktion i många programmeringsspråk där flera metoder kan skapas med samma namn men med olika ingångsparametrar 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 inmatningsparametrarna 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 "Lägg till" som tar som dess inmatning två hela nummer. 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, men denna funktionjon skulle inte vara tillämplig. Så, en andra överbelastad funktion skulle vara nödvändig, definierad som en funktion som kallas "ADD" 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 "ADD" -funktioner 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 funktionen "Lägg till" som tar två hela nummer returnera hela nummersumman, och funktionen "Lägg till" som tar två decimalnummer kan returnera det decimalnummer summan.
helt enkelt ändra returtyp OF En funktion anses emellertid inte vara giltig överbelastning av funktioner. 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.
Funktionsöverbelastning är användbar för att skapa relaterade funktioner med olika ingångstyper, och det ger kod mycket flexibilitet. En sista övervägandePå överbelastade funktioner är att adekvat kommentar är viktigt. Ä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.