Overstyring vs Overbelastning
Metoden Overriding og method Overloading er to begreper / teknikker / funksjon som finnes i noen programmeringsspråk. Begge konseptene lar programmereren tilby forskjellige implementeringer for metoder med samme navn. Metodeoverstyring lar programmereren gi en alternativ implementering i en underklasse til en metode som allerede er definert i superklassen. Metodeoverbelastning gjør at programmereren kan tilby forskjellige implementeringer til flere metoder med samme navn (innenfor samme klasse).
Hva er overstyring?
Som nevnt ovenfor kan en klasse utvide en superklasse eller en overordnet klasse, i objektorienterte programmeringsspråk. En underordnet klasse kan ha sine egne metoder eller kan eventuelt ha sine egne implementeringer til metoder som allerede er definert i sin overordnede klasse (eller en av sine overordnede klasser). Så når sistnevnte skjer, kalles det metodeoverstyring. Med andre ord, hvis barneklassen gir en implementering til en metode med samme signatur og returtype som en metode som allerede er definert i en av sine overordnede klasser, sies den metoden å bli tilsidesatt (erstattet) av implementeringen av barneklassen.. Så hvis det er en overstyrt metode i en klasse, må kjøretidssystemet bestemme hvilken implementeringsmetode som brukes. Dette problemet løses ved å se på den eksakte typen objekt som brukes til å påkalle det. Hvis et objekt fra overordnet klasse brukes til å påkalle den overstyrte metoden, brukes implementeringen i overordnede klasse. Tilsvarende, hvis det er et objekt fra barneklassen som brukes, så brukes implementeringen av barneklassen. Moderne programmeringsspråk som Java, Eifell, C ++ og Python tillater overstyring av metoden.
Hva er overbelastning?
Metodeoverbelastning er en funksjon som tilbys av noen programmeringsspråk for å lage mer enn en metode med samme navn, men med forskjellige inngangs- og utgangstyper. I moderne programmeringsspråk som Java, C #, C ++ og VB. NET er denne funksjonen tilgjengelig. Du kan overbelaste en metode ved å opprette en annen metode med samme navn, men med en annen metodesignatur eller en annen returtype (eller begge deler). For eksempel, hvis du har metode1 (type1 t1) og metode1 (type2 t2) i samme klasse, så er de overbelastet. Da må systemet bestemme hvilken som skal utføres når det blir ringt. Denne differensieringen gjøres ved å se på typen av parameterne som er sendt til metoden. Hvis argumentet er av type1, kalles den første implementeringen, mens hvis den er av type2, kalles den andre implementeringen.
Hva er forskjellen mellom overstyring og overbelastning?
Selv om metodeoverstyring og metodeoverbelastning brukes til å gi en metode med forskjellige implementeringer, er det nøkkelforskjeller mellom disse to konseptene / teknikkene. Først av alt holder emner med overordnet metode seg alltid innenfor forskjellige klasser, mens emner med overbelastning av metoden holder seg innenfor samme klasse. Det betyr at overstyring bare er mulig i objektorienterte programmeringsspråk som tillater arv, mens overbelastning også kan være tilgjengelig på et ikke objektorientert språk. Med andre ord overstyrer du en metode i superklassen, men du overbelaster en metode i din egen klasse.
En annen forskjell er at overstyrte metoder har samme metodenavn, metodesignatur og returtype, men overbelastede metoder må være forskjellige i enten signaturen eller returtypen (navnet skal være det samme). For å skille mellom to overstyrte metoder, brukes den nøyaktige typen objekt som brukes til å påkalle metodene id, mens for å skille mellom to overbelastede metoder, brukes parametertypene. En annen viktig forskjell er at overbelastning løses ved kompileringstid, mens overstyring løses ved kjøretid.