Belangrijk verschil - Overschrijven versus overbelasting in C
Het belangrijkste verschil tussen overschrijven en overladen in C is dat de binding van een overschreven methodeaanroep aan de definitie ervan tijdens runtime plaatsvindt, terwijl de binding van een overbelaste methodeaanroep aan de definitie ervan plaatsvindt tijdens het compileren.
C is een programmeertaal voor algemene doeleinden, ontwikkeld door Microsoft. Het belangrijkste voordeel van C is dat het Object Oriented Programming (OOP) ondersteunt. Een van de pijlers van OOP is polymorfisme. Het geeft een object meerdere gedragingen. Er zijn twee soorten polymorfisme, bekend als dwingend en overbelastend. Dit artikel bespreekt het verschil tussen methode-overriding en overloading in C.
Wat overschrijft in C?
Er is een ander belangrijk concept in OOP, namelijk overerving. Het is om attributen en methoden van de reeds bestaande klasse te gebruiken. Het verbetert de herbruikbaarheid van code. De reeds bestaande klasse is de basisklasse en de nieuwe klasse staat bekend als de afgeleide klasse. Bij het overschrijven van polymorfisme moet er een basisklasse en een afgeleide klasse zijn. De binding van de overschreven methodeaanroep aan de definitie gebeurt tijdens runtime. Een voorbeeld is als volgt.
Figuur 01: C-programma met overschrijven
Volgens het bovenstaande programma is de klasse Shape de basisklasse en bevat deze de weergavemethode. Klasse Rechthoek en Driehoek zijn afgeleide klassen. Deze afgeleide klassen hebben ook dezelfde methodeweergave met hun eigen implementaties.
Eerst wordt de referentievariabele obj gemaakt. Het wijst naar het Shape-object. De weergavemethode van de Shape-klasse wordt dus uitgevoerd. Vervolgens wijst de referentievariabele naar het object Rectangle. De weergavemethode van de klasse Rectangle wordt dus uitgevoerd. Ten slotte wijst de referentievariabele naar het Triangle-object. De weergavemethode van de klasse Triangle wordt dus uitgevoerd. De weergavemethode van de basisklasse wordt overschreven door de weergavemethoden van de afgeleide klassen.
De methode om te draaien wordt bepaald tijdens runtime. De klasse Shape is geschreven met het trefwoord 'virtueel'. De klassen Rechthoek en Driehoek zijn geschreven met het trefwoord 'override'. Als deze trefwoorden niet worden gebruikt, zal de uitvoer de inhoud van de weergavemethode van de Shape-klasse voor iedereen afdrukken.
Wat is overbelasting in C?
Bij overbelasting hebben meerdere methoden dezelfde naam maar met verschillende parameters. De parameters kunnen van verschillende typen zijn. De methoden kunnen ook een ander aantal parameters hebben. Overbelasting van de methode komt voor in dezelfde klasse. De binding van overbelaste methoden aan de definitie gebeurt tijdens het compileren. Raadpleeg het onderstaande C-programma.
Figuur 02: C-programma met overbelasting
Volgens het bovenstaande programma heeft klasse A twee methoden met dezelfde naam, sum genaamd. Ze hebben verschillende soorten parameters. In het hoofdprogramma wordt een object van A gemaakt. De som (2, 3) roept de sommethode op met gehele getallen. De som (5.1, 7.94) roept de sommethode op met dubbele waarden. Beide methoden hebben dezelfde naam en hetzelfde aantal parameters. Maar de parametertypes zijn verschillend. De vereiste methode wordt dienovereenkomstig aangeroepen. Overbelasting kan ook optreden als de methodenamen en parametertypes hetzelfde zijn, maar het aantal parameters verschilt.
Wat is de overeenkomst tussen overschrijven en overbelasten in C?
Zowel Overriding als Overloading in C zijn vormen van polymorfisme
Wat is het verschil tussen overschrijven en overbelasten in C?
Overschrijven versus overbelasting in C |
|
Overschrijven in C is om een specifieke implementatie te bieden in een afgeleide klassenmethode voor een methode die al bestaat in de basisklasse. | Overbelasting in C is het creëren van meerdere methoden met dezelfde naam met verschillende implementaties. |
Parameters | |
In C Overriding hebben de methoden dezelfde naam, dezelfde parametertypen en hetzelfde aantal parameters. | In C Overloading hebben de methoden dezelfde naam maar een ander aantal parameters of een ander type parameters. |
Voorkomen | |
In C vindt overschrijven plaats binnen de basisklasse en de afgeleide klasse. | In C vindt overbelasting plaats binnen dezelfde klasse. |
Bindingstijd | |
De binding van de overschreven methodeaanroep aan zijn definitie gebeurt tijdens runtime. | De binding van de overbelaste methodeaanroep aan zijn definitie gebeurt tijdens het compileren. |
Synoniemen | |
Overschrijven wordt runtime-polymorfisme, dynamisch polymorfisme of late binding genoemd. | Overbelasting wordt genoemd als compilatietijdpolymorfisme, statisch polymorfisme of vroege binding. |
Samenvatting - Overschrijven versus overbelasting in C
Overriding en Overloading zijn twee soorten polymorfisme. Het verschil tussen overschrijven en overladen in C is dat de binding van de overschreven methodeaanroep aan de definitie ervan tijdens runtime plaatsvindt, terwijl de binding van de overbelaste methodeaanroep aan de definitie ervan plaatsvindt tijdens het compileren.