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 vil være gyldig overbelastning.

Den første måten en funksjon kan overbelastes er ved å endre inngangsparametrene. For eksempel kan man vurdere en funksjon som heter "Legg til" som tar 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, men denne funksjonenion ville ikke være aktuelt. Så en annen overbelastet funksjon ville være nødvendig, definert som en funksjon som kalles "Legg til" som tar innspill to floats. 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 på er å endre både inngangsparametrene og dens returtype. Ved å bruke det forrige eksemplet kan man vurdere om begge overbelastede "Add" -funksjonene 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 "add" -funksjonen som tar to hele tall returnere den hele antall summen, og "add" -funksjonen som tar to desimaltall kan returnere det desimalnummer summen.

bare endre returtypen of En funksjon anses imidlertid ikke som gyldig funksjonsoverbelastning. Endring av bare returtypen til en funksjon resulterer i tvetydighet, fordi det ikke er klart fra metodesignaturen hvilken returtype som 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 å kalle 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 forsiktighet for å sikre at riktig overbelastet funksjon kalles til riktig tid.

Funksjonsoverbelastning er nyttig for å lage relaterte funksjoner med varierte inngangstyper, og det gir kode mye fleksibilitet. En siste vurderingPå 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.

ANDRE SPRÅK