Forskel mellem overstyring og overbelastning

Anonim

Overstyring vs Overbelastning

Metoden Overstyring og metode Overbelastning er to begreber / teknikker / funktion, der findes i nogle programmeringssprog. Begge koncepter giver programmereren mulighed for at give forskellige implementeringer til metoder med samme navn. Metode overstyring giver programmereren mulighed for at levere en alternativ implementering inden for en underklasse til en metode, der allerede er defineret i sin superklasse. Metode overbelastning giver programmereren mulighed for at give forskellige implementeringer til flere metoder med samme navn (inden for samme klasse).

Hvad er overstyrende?

Som nævnt ovenfor kan en klasse udvide en superklasse eller en forældersklasse i objektorienterede programmeringssprog. En børneklasse kan have sine egne metoder eller kan eventuelt have sine egne implementeringer til metoder, der allerede er defineret i sin forældersklasse (eller en af ​​sine overordnede forældreklasser). Så når sidstnævnte sker, kaldes det metode overordnet. Med andre ord, hvis barneklassen gennemfører en metode med samme underskrift og returtype som en metode, der allerede er defineret i en af ​​dens forældersklasser, siges denne metode at blive tilsidesat (erstattet) ved gennemførelsen af ​​barnet. Så hvis der er en overstyret metode i en klasse, skal runtime-systemet afgøre, hvilken metodeimplementering der anvendes. Dette problem er løst ved at se på den nøjagtige type objekt, der bruges til at påberåbe sig det. Hvis en forældersklasses genstand anvendes til at påberåbe den overstyrte metode, anvendes implementeringen i forældrenes klasse. På samme måde, hvis det er en genstand for den barneklasse, der bruges, så bruges undervisningsklassens implementering. Moderne programmeringssprog som Java, Eifell, C ++ og Python tillader overordnet metode.

Hvad er overbelastning?

Overbelastning af metoden er en funktion, der leveres af nogle programmeringssprog til at oprette mere end en metode med samme navn, men med forskellige input- og outputtyper. I moderne programmeringssprog som Java, C #, C ++ og VB. NET, denne funktion er tilgængelig. Du kan overbelaste en metode ved at oprette en anden metode med samme navn, men med en anden metode signatur eller en anden retur type (eller begge). For eksempel, hvis du har metode1 (type1 t1) og metode1 (type2 t2) inde i samme klasse, så overbelastes de. Derefter skal systemet afgøre, hvilken en skal udføres, når den hedder. Denne differentiering er lavet ved at se på typen af ​​parameteren (e), der er blevet overført til metoden. Hvis argumentet er af type1, kaldes den første implementering, mens hvis den er af type2, så kaldes den anden implementering.

Hvad er forskellen mellem Overstyring og Overbelastning?

Selv om metodeoverstyring og overbelastning af metoder bruges til at tilvejebringe en metode med forskellige implementeringer, er der væsentlige forskelle mellem disse to begreber / teknikker. Først og fremmest forbliver emner af overordnet metode altid inden for forskellige klasser, mens emner for overbelastning af metoder forbliver inden for samme klasse. Det betyder, at overordnet kun er muligt i objektorienterede programmeringssprog, der tillader arv, mens overbelastning også kan findes i et ikke objektorienteret sprog. Med andre ord overstyrer du en metode i superklassen, men du overbelaster en metode i din egen klasse.

En anden forskel er, at overskridte metoder har samme metode navn, metode signatur og retur type, men overbelastede metoder skal afvige i enten signaturen eller returtypen (navnet skal være det samme). For at differentiere mellem to overstyrede metoder, anvendes den nøjagtige type objekt, der bruges til at påberåbe sig de anvendte metoder, mens der skelnes mellem to overbelastede metoder, hvilke typer af parametre der anvendes. En anden vigtig forskel er, at overbelastning er løst på kompileringstid, mens overstyring er løst ved kørsel.