Forskjellen mellom overstyring og overbelastning

Forskjellen mellom overstyring og overbelastning
Forskjellen mellom overstyring og overbelastning

Video: Forskjellen mellom overstyring og overbelastning

Video: Forskjellen mellom overstyring og overbelastning
Video: ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! Полезные советы и хитрости мастеров на все случаи жизни! 2024, Juli
Anonim

Overstyre kontra overbelastning

Metoden Overstyring og metode Overbelastning er to konsepter/teknikker/funksjoner som finnes i noen programmeringsspråk. Begge konseptene lar programmereren tilby forskjellige implementeringer for metoder med samme navn. Metodeoverstyring lar programmereren tilby en alternativ implementering innenfor en underklasse til en metode som allerede er definert i superklassen. Metodeoverbelastning lar programmereren tilby ulike 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 barneklasse kan ha sine egne metoder eller kan valgfritt ha sine egne implementeringer til metoder som allerede er definert i dens overordnede klasse (eller en av dens overordnede klasse). Så når det siste skjer, kalles det metodeoverstyring. Med andre ord, hvis den underordnede klassen gir en implementering til en metode med samme signatur og returtype som en metode som allerede er definert i en av dens overordnede klasser, sies den metoden å bli overstyrt (erstattet) av implementeringen av underklassen. Så hvis det er en overstyrt metode i en klasse, må kjøretidssystemet bestemme hvilken metodeimplementering som brukes. Dette problemet løses ved å se på den eksakte typen objekt som brukes til å påkalle det. Hvis et objekt av den overordnede klassen brukes til å påkalle den overstyrte metoden, brukes implementeringen i den overordnede klassen. På samme måte, hvis det er et objekt i barneklassen som brukes, brukes implementeringen av barneklassen. Moderne programmeringsspråk som Java, Eifell, C++ og Python tillater metodeoverstyring.

Hva er overbelastning?

Method overloading er en funksjon som tilbys av noen programmeringsspråk for å lage mer enn én metode med samme navn, men med forskjellige input- og output-typer. I moderne programmeringsspråk som Java, C, C++ og VB. NET er denne funksjonen tilgjengelig. Du kan overbelaste en metode ved å lage 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 kjøres når den kalles. Denne differensieringen gjøres ved å se på typen parameter(e) som er sendt inn i 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 for å gi en metode med forskjellige implementeringer, er det viktige forskjeller mellom disse to konseptene/teknikkene. For det første holder emner med metodeoverstyring seg alltid innenfor ulike klasser, mens emner med metodeoverbelastning holder seg innenfor samme klasse. Det betyr at overstyring kun 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, du overstyrer 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, den eksakte typen objekt som brukes til å påkalle metode-IDen som brukes, mens for å skille mellom to overbelastede metoder brukes parametertypene. En annen viktig forskjell er at overbelastning løses ved kompilering, mens overstyring løses ved kjøretid.

Anbefalt: