Forskel mellem tilsidesættelse og overbelastning

Overriding vs overbelastning

Metoden Overriding og method Overloading er to koncepter / teknikker / funktion findes i nogle programmeringssprog. Begge koncepter giver programmereren mulighed for at levere forskellige implementeringer til metoder med samme navn. Metodeoverskridelse giver programmereren mulighed for at tilvejebringe en alternativ implementering i en underklasse til en metode, der allerede er defineret i dens superklasse. Metodeoverbelastning giver programmereren mulighed for at levere forskellige implementeringer af 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ældreklasse i objektorienterede programmeringssprog. En barneklasse kan have sine egne metoder eller kan valgfrit have sine egne implementeringer af metoder, der allerede er defineret i dets overordnede klasse (eller en af ​​dets grand parent klasser). Så når sidstnævnte sker, kaldes det metodeoverskridelse. Med andre ord, hvis barneklassen leverer en implementering af en metode med den samme signatur og returtype som en metode, der allerede er defineret i en af ​​dens overordnede klasser, siges denne metode at blive tilsidesat (erstattet) af implementeringen af ​​barneklassen . 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åkalde det. Hvis et objekt fra forældreklassen bruges til at påberåbe sig den tilsidesatte metode, anvendes implementeringen i overordnet klassen. Tilsvarende, hvis det er et objekt for den barneklasse, der bruges, bruges implementering af barneklassen. Moderne programmeringssprog som Java, Eifell, C ++ og Python tillader metodeoverskridelse.

Hvad er overbelastning?

Metodeoverbelastning er en funktion, der leveres af nogle programmeringssprog for at skabe 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). Hvis du f.eks. 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 blevet 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 overdrivning og overbelastning?

Selvom metodeoverskridelse og metodeoverbelastning bruges til at tilvejebringe en metode med forskellige implementeringer, er der nøgleforskelle mellem disse to koncepter / teknikker. For det første forbliver emner med metodeoverskridelse altid inden for forskellige klasser, mens emner med metodeoverbelastning forbliver inden for den 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 tilsidesætter du en metode i superklassen, men du overbelaster en metode i 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 overstyrede metoder bruges den nøjagtige type objekt, der bruges til at påkalde de anvendte metoder-id, mens parametrene for parametrene bruges til at skelne mellem to overbelastede metoder. En anden vigtig forskel er, at overbelastning løses på kompileringstidspunktet, mens overstyring løses ved kørsel.