Skillnad mellan överstyrning och överbelastning

Anonim

Överstyrning mot överbelastning

Metoden Överordnad och metod Överbelastning är två begrepp / tekniker / funktion som finns på vissa programmeringsspråk. Båda koncepten tillåter programmeraren att tillhandahålla olika implementeringar för metoder med samma namn. Metoden överordnad tillåter programmeraren att tillhandahålla ett alternativt genomförande inom en underklass till en metod som redan definierats inom sin superklass. Metoden överbelastning tillåter programmeraren att tillhandahålla olika implementeringar till flera metoder med samma namn (inom samma klass).

Vad är Övergripande?

Som nämnts ovan kan en klass förlänga en superklass eller en föräldraklass i objektorienterade programmeringsspråk. En barnklass kan ha egna metoder eller kan eventuellt ha egna implementeringar till metoder som redan definierats i sin föräldraklass (eller en av sina överordnade förälderklasser). Så när den senare händer kallas det metodövergripande. Med andra ord, om barnklassen ger en implementering till en metod med samma signatur och returtyp som en metod som redan definierats i en av sina föräldraklasser, sägs den metoden överskridas (ersättas) genom genomförandet av barnklassen. Så, om det finns en överdriven metod i en klass, måste runtime-systemet bestämma vilken metodimplementering som används. Problemet löses genom att titta på exakt vilken typ av objekt som används för att göra det. Om ett föremål för moderklassen används för att åberopa överdriven metod används implementeringen i föräldraklassen. På samma sätt, om det är ett föremål för barnklassen som används, används barnklassens genomförande. Moderna programmeringsspråk som Java, Eifell, C ++ och Python gör det möjligt att överväga metod.

Vad är överbelastning?

Överbelastning av metoden är en funktion som tillhandahålls av vissa programmeringsspråk för att skapa mer än en metod med samma namn men med olika inmatnings- och utmatningstyper. I moderna programmeringsspråk som Java, C #, C ++ och VB. NET, den här funktionen är tillgänglig. Du kan överbelasta en metod genom att skapa en annan metod med samma namn men med en annan metod signatur eller en annan returtyp (eller båda). Om du till exempel har metod1 (typ1 t1) och metod1 (typ2 t2) inuti samma klass, överbelastas de. Då måste systemet bestämma vilken som ska utföras när den kallas. Denna differentiering görs genom att titta på typen av parametern (erna) som har överförts till metoden. Om argumentet är av typ1, kallas den första implementeringen, men om den är av typ2, så kallas den andra implementeringen.

Vad är skillnaden mellan Överstyrning och Överbelastning?

Även om metodöverstyrning och överbelastning av metoder används för att tillhandahålla en metod med olika implementeringar, är det väsentliga skillnader mellan dessa två begrepp / tekniker. Först och främst hålls ämnen av överordnad metod alltid inom olika klasser, medan ämnen av överbelastning av metoderna ligger inom samma klass. Det betyder att överordnande endast är möjligt i objektorienterade programmeringsspråk som tillåter arv, medan överbelastning kan vara tillgänglig även i ett icke-objektorienterat språk. Med andra ord åsidosätter du en metod i superklassen men du överbelastar en metod inom din egen klass.

En annan skillnad är att överdrivna metoder har samma metodnamn, metod signatur och returtyp, men överbelastade metoder måste skilja sig åt antingen signaturen eller returtypen (namnet ska vara detsamma). För att differentiera mellan två överdrivna metoder, används den exakta typen av objekt som används för att åberopa metoderna som används, medan man skiljer mellan två överbelastade metoder som används av parametrarna. En annan viktig skillnad är att överbelastningen löses vid kompileringstid, medan överstyrning löses vid körning.