Tilsidesættende vs. overbelastning
Metoden Overstyring og metode Overbelastning er to begreber/teknikker/funktioner, der findes i nogle programmeringssprog. Begge koncepter giver programmøren mulighed for at levere forskellige implementeringer til metoder med samme navn. Metodetilsidesættelse giver programmøren mulighed for at levere en alternativ implementering inden for en underklasse til en metode, der allerede er defineret i dens superklasse. Metodeoverbelastning giver programmøren mulighed for at levere forskellige implementeringer til flere metoder med det samme navn (inden for samme klasse).
Hvad er tilsidesættelse?
Som nævnt ovenfor kan en klasse udvide en superklasse eller en overordnet klasse i objektorienterede programmeringssprog. En underordnet klasse kan have sine egne metoder eller kan valgfrit have sine egne implementeringer til metoder, der allerede er defineret i dens overordnede klasse (eller en af dens overordnede klasser). Så når det sidste sker, kaldes det metodeoverstyring. Med andre ord, hvis den underordnede klasse leverer en implementering til en metode med samme signatur og returtype som en metode, der allerede er defineret i en af dens overordnede klasser, siges denne metode at være 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 fremkalde det. Hvis et objekt fra den overordnede klasse bruges til at påkalde den tilsidesatte metode, så bruges implementeringen i den overordnede klasse. På samme måde, hvis det er et objekt fra den underordnede klasse, der bruges, så bruges den underordnede klasses implementering. Moderne programmeringssprog som Java, Eifell, C++ og Python tillader metodetilsidesættelse.
Hvad er overbelastning?
Method overloading er en funktion, der leveres af nogle programmeringssprog til at skabe mere end én 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) i samme klasse, så er de overbelastet. Så skal systemet beslutte, hvilken der skal udføres, når den kaldes. Denne differentiering foretages ved at se på typen af de(n) parametre, der er blevet overført 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 tilsidesættelse og overbelastning?
Selv om metodeoverstyring og metodeoverbelastning bruges til at give en metode med forskellige implementeringer, er der vigtige forskelle mellem disse to koncepter/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 nedarvning, mens overbelastning også kan være tilgængelig i et ikke-objektorienteret sprog. Med andre ord, du tilsidesætter 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 tilsidesatte metoder, den nøjagtige type objekt, der bruges til at påberåbe det anvendte metode-id, hvorimod parametrenes typer bruges til at skelne mellem to overbelastede metoder. En anden vigtig forskel er, at overbelastning løses ved kompilering, mens tilsidesættelse løses ved kørsel.