Skillnad Mellan överstyrning Och överbelastning

Skillnad Mellan överstyrning Och överbelastning
Skillnad Mellan överstyrning Och överbelastning

Video: Skillnad Mellan överstyrning Och överbelastning

Video: Skillnad Mellan överstyrning Och överbelastning
Video: Kjell-TV - Vad skiljer mellan mobilladdare? (Hur funkar det?) 2024, April
Anonim

Överstyrning vs Överbelastning

Metoden Overriding och metod Overloading är två begrepp / tekniker / funktion som finns i vissa programmeringsspråk. Båda begreppen gör det möjligt för programmeraren att tillhandahålla olika implementeringar för metoder med samma namn. Metodöverstyrning gör det möjligt för programmeraren att tillhandahålla en alternativ implementering inom en underklass till en metod som redan definierats i sin superklass. Metodöverbelastning gör det möjligt för programmeraren att tillhandahålla olika implementeringar till flera metoder med samma namn (inom samma klass).

Vad är överstyrning?

Som nämnts ovan kan en klass utvidga en superklass eller en överordnad klass på objektorienterade programmeringsspråk. En underordnad klass kan ha sina egna metoder eller kan valfritt ha sina egna implementeringar av metoder som redan definierats i sin överordnade klass (eller en av dess överordnade föräldraklasser). Så när det senare händer kallas det metodöverstyrning. Med andra ord, om barnklassen tillhandahåller en implementering av en metod med samma signatur och returtyp som en metod som redan definierats i en av dess överordnade klasser, sägs den metoden åsidosättas (ersätts) av implementeringen av underklassen. Så om det finns en åsidosatt metod i en klass måste runtime-systemet bestämma vilken metodimplementering som används. Det här problemet löses genom att titta på exakt vilken typ av objekt som används för att åberopa det. Om ett objekt från överordnad klass används för att åberopa den åsidosatta metoden används implementeringen i överordnad klass. På samma sätt, om det är ett objekt av barnklassen som används, så används barnklassens implementering. Moderna programmeringsspråk som Java, Eifell, C ++ och Python tillåter metodöverstyrning.

Vad är överbelastning?

Metodöverbelastning är en funktion som tillhandahålls av vissa programmeringsspråk för att skapa mer än en metod med samma namn, men med olika in- och utgångstyper. I moderna programmeringsspråk som Java, C #, C ++ och VB. NET är denna funktion tillgänglig. Du kan överbelasta en metod genom att skapa en annan metod med samma namn men med en annan metodesignatur eller en annan returtyp (eller båda). Om du till exempel har metod1 (typ1 t1) och metod1 (typ2 t2) i samma klass, är de överbelastade. Då måste systemet bestämma vilken som ska köras när den anropas. Denna differentiering görs genom att titta på typen av parametrar som skickats in till metoden. Om argumentet är av typ1 kallas den första implementeringen, medan om den är av typ2 kallas den andra implementeringen.

Vad är skillnaden mellan överstyrning och överbelastning?

Även om metodöverstyrning och metodöverbelastning används för att tillhandahålla en metod med olika implementeringar, finns det viktiga skillnader mellan dessa två begrepp / tekniker. Först och främst förblir ämnen för metodöverstyrning alltid inom olika klasser, medan ämnen för metodöverbelastning håller sig inom samma klass. Det betyder att överstyrning endast är möjlig i objektorienterade programmeringsspråk som möjliggör ärv, medan överbelastning också kan finnas på ett icke objektorienterat språk. Med andra ord, du åsidosätter en metod i superklassen men du överbelastar en metod inom din egen klass.

En annan skillnad är att åsidosatta metoder har samma metodnamn, metodsignatur och returtyp, men överbelastade metoder måste skilja sig i antingen signaturen eller returtypen (namnet ska vara detsamma). För att skilja mellan två åsidosatta metoder används den exakta typen av objekt som används för att åberopa metoderna id som används, medan för att skilja mellan två överbelastade metoder används parametertyperna. En annan viktig skillnad är att överbelastning löses vid kompileringstid, medan åsidosättande löses vid körning.

Rekommenderas: