Hva er funksjonsoverbelastning?

Overbelastning av funksjoner er en funksjon i mange programmeringsspråk der flere metoder kan opprettes med samme navn, men med forskjellige inngangsparametere eller returtyper. Dette er et vanlig trekk ved objektorientert programmering; spesielt konstruktører kan ha flere forskjellige overbelastede varianter. I hovedsak er funksjonsoverbelastning nyttig når to funksjoner gjør veldig like ting og kan ta flere typer innspill for å gjøre det. Konstruktører kan enkelt overbelastes fordi de ikke har noen eksplisitt returtype angitt, så det er gyldig overbelastning å endre inngangsparametrene til en konstruktør.

Den første måten en funksjon kan overbelastes på er ved å endre inngangsparametere. For eksempel kan man vurdere en funksjon som kalles "legge til" som tar inn to hele tall. Hensikten med denne funksjonen er ganske åpenbar; det er ment å finne summen av to hele tall.

Hvis man ønsket å finne summen av to flottører, eller desimaltall, ville denne funksjonen imidlertid ikke være aktuelt. Så en annen overbelastet funksjon ville være nødvendig, definert som en funksjon som kalles "add" som tar to floats som inngang. Funksjonene gjør i hovedsak det samme, men funksjonsoverbelastning er nødvendig fordi inngangene deres er vesentlig forskjellige.

Den andre måten en funksjon kan overbelastes på er å endre både inngangsparametere og returtype. Ved å bruke forrige eksempel kan man vurdere om begge overbelastede "legge til" -funksjonene hadde en tomt returtype; det vil si at de returnerte ingenting. Dette vil fortsatt være gyldig funksjonsoverbelastning, men returtypene til de to metodene kan også endres. I et annet gyldig tilfelle av overbelastning, kan "legge til" -funksjonen som tar to hele tall returnere hele summen, og "legge til" -funksjonen som tar to desimaltall kan returnere den desimaltallssummen.

Bare å endre returtypen til en funksjon regnes imidlertid ikke som gyldig funksjonsoverbelastning. Endring av bare returtypen til en funksjon resulterer i tvetydighet, fordi det ikke fremgår av metodesignaturen hvilken returtype som ønskes. Parametere kan også defineres tvetydig, så det er veldig viktig at overbelastede funksjoner kalles riktig. For eksempel, hvis man har en overbelastet funksjon som har et helt tall som sin inngangsparameter, og en annen som har et desimalnummer som en parameter, vil det være veldig enkelt for noen å tilfeldigvis ringe desimalnummerfunksjonen i stedet for hele tallfunksjonen , eller omvendt, fordi de har samme navn. Tvetydige parametere som disse bør unngås om mulig, og hvis de ikke kan være det, bør man være nøye med å sørge for at riktig overbelastet funksjon kalles til riktig tid.

Overbelastning av funksjoner er nyttig for å lage relaterte funksjoner med forskjellige inndatatyper, og det gir kode mye fleksibilitet. En siste vurdering av overbelastede funksjoner er at tilstrekkelig kommentering er viktig. Selv om det kan være tydelig ved forskjellige inngangsparametere hvilken versjon av en overbelastet funksjon som er riktig for en spesiell situasjon, er det ikke alltid klart at nøyaktig hva funksjonen gjør annerledes enn de andre overbelastede partnerne.

ANDRE SPRÅK

Hjalp denne artikkelen deg? Takk for tilbakemeldingen Takk for tilbakemeldingen

Hvordan kan vi hjelpe? Hvordan kan vi hjelpe?