Åsidosättande vs överbelastning
Metoden Åsidosättande och metod Överbelastning är två begrepp/tekniker/funktioner som finns i vissa programmeringsspråk. Båda koncepten tillåter programmeraren att tillhandahålla olika implementeringar för metoder med samma namn. Metodöverstyrning tillåter programmeraren att tillhandahålla en alternativ implementering inom en underklass till en metod som redan är definierad i dess superklass. Metodöverbelastning tillåter programmeraren att tillhandahålla olika implementeringar till flera metoder med samma namn (inom samma klass).
Vad är åsidosättande?
Som nämnts ovan kan en klass utöka en superklass eller en överordnad klass, i objektorienterade programmeringsspråk. En underordnad klass kan ha sina egna metoder eller kan valfritt ha sina egna implementeringar till metoder som redan definierats i dess överordnade klass (eller en av dess överordnade klasser). Så när det senare händer kallas det metodöverstyrning. Med andra ord, om den underordnade klassen tillhandahåller en implementering till en metod med samma signatur och returtyp som en metod som redan definierats i en av dess överordnade klasser, sägs den metoden vara åsidosatt (ersatt) av implementeringen av den underordnade klassen. 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å den exakta typen av objekt som används för att anropa det. Om ett objekt av den överordnade klassen används för att anropa den åsidosatta metoden, används implementeringen i den överordnade klassen. På samma sätt, om det är ett objekt i den underordnade klassen som används, används den underordnade klassens 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 utdatatyper. 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 metodsignatur eller en annan returtyp (eller båda). Till exempel, om du har metod1(typ1 t1) och metod1(typ2 t2) i samma klass, då är de överbelastade. Sedan måste systemet bestämma vilken som ska exekveras när den anropas. Denna differentiering görs genom att titta på typen av parameter(er) som skickats in i metoden. Om argumentet är av typ1 anropas den första implementeringen, medan om det är av typ2 anropas den andra implementeringen.
Vad är skillnaden mellan Åsidosättande 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å koncept/tekniker. För det första stannar ämnen med metodöverskridande alltid inom olika klasser, medan ämnen med metodöverbelastning stannar inom samma klass. Det betyder att åsidosättning endast är möjlig i objektorienterade programmeringsspråk som tillåter nedärvning, medan överbelastning också kan vara tillgänglig på ett icke objektorienterat språk. Med andra ord, du åsidosätter en metod i superklassen men du överbelastas 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 åt i antingen signaturen eller returtypen (namnet ska vara detsamma). För att skilja mellan två åsidosatta metoder, den exakta typen av objekt som används för att anropa metod-id, medan för att skilja mellan två överbelastade metoder används parametrarnas typer. En annan viktig skillnad är att överbelastning löses vid kompilering, medan åsidosättning löses vid körning.