Skip to main content

Hva er overbelastning av funksjonen?

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

Den første måten en funksjon kan overbelastes er ved å endre inngangsparametere.For eksempel kan man vurdere en funksjon som heter Add som tar som innspill 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 som inngangs to flottører.Funksjonene gjør i hovedsak det samme, men funksjon overbelastning er nødvendig fordi inngangene deres er betydelig forskjellige.

Den andre måten en funksjon kan overbelastes er å endre både inngangsparametrene og dens returtype.Ved å bruke det forrige eksemplet kan man vurdere om begge overbelastede ADD -funksjoner hadde en tomromstype;Det vil si at de ikke returnerte noe.Dette vil fortsatt være gyldig funksjonsoverbelastning, men returtypene til de to metodene kan også endres.I et annet gyldig forekomst av overbelastning kan tilleggsfunksjonen som tar to hele tall returnere hele antall summen, og tilleggsfunksjonen som tar to desimaltall kan returnere det desimalnummeret., anses ikke som gyldig funksjonsoverbelastning.Endring av bare returtypen til en funksjon resulterer i tvetydighet, fordi den ikke er klart fra metodesignaturen som returtype er ønsket.Parametere kan også defineres tvetydig, så det er veldig viktig for overbelastede funksjoner som skal kalles riktig.For eksempel, hvis en har en overbelastet funksjon som har et helt tall som inngangsparameter, og en annen som har et desimaltall som en parameter, ville det være veldig enkelt for noen å ved et uhell 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, bør det tas stor forsiktig, og det gir kode mye fleksibilitet.En siste vurdering av overbelastede funksjoner er at tilstrekkelig kommentar er viktig.Selv om det kan være klart ved forskjellige inngangsparametere hvilken versjon av en overbelastet funksjon som er riktig for en bestemt situasjon, kan det ikke alltid være klart nøyaktig hva funksjonen gjør annerledes enn de andre overbelastede partnerne.