Forskellen Mellem Overstyring Og Overbelastning

Forskellen Mellem Overstyring Og Overbelastning
Forskellen Mellem Overstyring Og Overbelastning

Video: Forskellen Mellem Overstyring Og Overbelastning

Video: Forskellen Mellem Overstyring Og Overbelastning
Video: From C to Python by Ross Rheingans-Yoo 2024, April
Anonim

Overstyring vs Overbelastning

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

Hvad er tilsidesættelse?

Som nævnt ovenfor kan en klasse udvide en superklasse eller en overordnet klasse på objektorienterede programmeringssprog. En underordnet klasse kan have sine egne metoder eller kan eventuelt have sine egne implementeringer til metoder, der allerede er defineret i sin overordnede klasse (eller en af dens overordnede forældreklasser). Så når sidstnævnte sker, kaldes det metodeoverstyring. Med andre ord, hvis barneklassen leverer en implementering til en metode med samme signatur og returneringstype som en metode, der allerede er defineret i en af dens overordnede klasser, siges denne metode at blive tilsidesat (erstattet) af implementeringen af underklassen. Så hvis der er en tilsidesat metode i en klasse, skal runtime-systemet beslutte, hvilken metodeimplementering der bruges. Dette problem løses ved at se på den nøjagtige type objekt, der bruges til at påberåbe sig det. Hvis et objekt fra den overordnede klasse bruges til at påkalde den tilsidesatte metode, anvendes implementeringen i den overordnede klasse. Tilsvarende, hvis det er et objekt i barneklassen, der bruges, så anvendes barneklassens implementering. Moderne programmeringssprog som Java, Eifell, C ++ og Python tillader metode tilsidesættelse.

Hvad er overbelastning?

Metodeoverbelastning 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 er denne funktion tilgængelig. Du kan overbelaste en metode ved at oprette en anden metode med samme navn, men med en anden metodesignatur eller en anden returtype (eller begge dele). For eksempel, hvis du har metode1 (type1 t1) og metode1 (type2 t2) inden for samme klasse, er de overbelastede. Derefter skal systemet beslutte, hvilken der skal udføres, når det kaldes. Denne differentiering foretages ved at se på typen af parametre, der er sendt til metoden. Hvis argumentet er af type1, kaldes den første implementering, mens hvis det er af type2, kaldes den anden implementering.

Hvad er forskellen mellem overstyring og overbelastning?

Selvom metodeoverstyring og metodeoverbelastning bruges til at tilvejebringe en metode med forskellige implementeringer, er der vigtige forskelle mellem disse to begreber / teknikker. Først og fremmest forbliver emner med metodeoverstyring altid inden for forskellige klasser, mens emner med metodeoverbelastning forbliver inden for samme klasse. Det betyder, at tilsidesættelse kun er mulig i objektorienterede programmeringssprog, der tillader arv, mens overbelastning også kan være tilgængelig på et ikke objektorienteret sprog. Med andre ord overstyrer du en metode i superklassen, men du overbelaster en metode inden for din egen klasse.

En anden forskel er, at tilsidesatte metoder har samme metodenavn, metodesignatur og returtype, men overbelastede metoder skal være forskellige i enten signaturen eller returtypen (navnet skal være det samme). For at skelne mellem to tilsidesatte metoder bruges den nøjagtige type objekt, der bruges til at påkalde de anvendte metoder-id, mens parametrene bruges til at skelne mellem to overbelastede metoder. En anden vigtig forskel er, at overbelastning løses på kompileringstidspunktet, mens tilsidesættelse løses ved kørselstid.

Anbefalet: