Nøgleforskel – Tilsidesættelse vs overbelastning i C
Nøgleforskellen mellem tilsidesættelse og overbelastning i C er, at bindingen af det tilsidesatte metodekald til dens definition sker ved kørsel, mens bindingen af overbelastet metodekald til dens definition sker på kompileringstidspunktet.
C er et alment programmeringssprog udviklet af Microsoft. Den største fordel ved C er, at den understøtter objektorienteret programmering (OOP). En søjle i OOP er polymorfisme. Det giver et objekt at have flere adfærd. Der er to typer i polymorfi kendt som tilsidesættelse og overbelastning. Denne artikel diskuterer forskellen mellem metodetilsidesættelse og overbelastning i C.
Hvad er tilsidesættelse i C?
Der er et andet vigtigt koncept i OOP er arv. Det er at bruge attributter og metoder fra den allerede eksisterende klasse. Det forbedrer kodegenanvendelighed. Den allerede eksisterende klasse er basisklassen, og den nye klasse er kendt som den afledte klasse. Ved tilsidesættelse af polymorfi bør der være en basisklasse og en afledt klasse. Bindingen af det tilsidesatte metodekald til definitionen sker ved kørsel. Et eksempel er som følger.
Figur 01: C-program med tilsidesættelse
Ifølge ovenstående program er klassen Shape basisklassen, og den indeholder visningsmetoden. Klasse rektangel og trekant er afledte klasser. Disse afledte klasser har også den samme metodevisning med deres egne implementeringer.
Først oprettes referencevariablen obj. Det peger på Shape-objektet. Så visningsmetoden for Shape-klassen udføres. Derefter peger referencevariablen på Rectangle-objektet. Så visningsmetoden i klassen Rectangle vil udføres. Til sidst peger referencevariablen på Triangle-objektet. Så visningsmetoden for Triangle-klassen udføres. Basisklassens visningsmetode tilsidesættes af visningsmetoderne for de afledte klasser.
Køremetoden bestemmes under kørsel. Shape-klassen er skrevet med 'virtuelt' nøgleord. Klasserne Rektangel og Trekant er skrevet med 'override' nøgleord. Hvis disse nøgleord ikke bruges, udskriver outputtet indholdet af visningsmetoden for Shape-klassen for alle.
Hvad er overbelastning i C?
Ved overbelastning har flere metoder det samme navn, men med forskellige parametre. Parametrene kan være af forskellige typer. Metoderne kan også have et andet antal parametre. Metodeoverbelastning forekommer i samme klasse. Bindingen af overbelastede metoder til definitionen sker på kompileringstidspunktet. Se nedenstående C-program.
Figur 02: C-program med overbelastning
Ifølge ovenstående program har klasse A to metoder med samme navn kaldet sum. De har forskellige typer parametre. I hovedprogrammet oprettes et objekt af A. Summen (2, 3) vil påberåbe summetoden med heltal. Summen (5.1, 7.94) vil påberåbe summetoden med dobbelte værdier. Begge metoder har samme navn og samme antal parametre. Men parametertyperne er forskellige. Den nødvendige metode kaldes i overensstemmelse hermed. Overbelastning kan også forekomme, hvis metodenavnene og parametertyperne er ens, men antallet af parametre er forskelligt.
Hvad er ligheden mellem tilsidesættelse og overbelastning i C?
Både tilsidesættelse og overbelastning i C er typer af polymorfi
Hvad er forskellen mellem tilsidesættelse og overbelastning i C?
Tilsidesættende vs overbelastning i C |
|
Tilsidesættelse i C er at give en specifik implementering i en afledt klassemetode for en metode, der allerede eksisterer i basisklassen. | Overbelastning i C er at skabe flere metoder med samme navn med forskellige implementeringer. |
Parametre | |
I C-tilsidesættelse har metoderne det samme navn, samme parametertyper og samme antal parametre. | I C Overloading har metoderne det samme navn, men et andet antal parametre eller en anden type parametre. |
Forekomst | |
I C sker tilsidesættelse inden for basisklassen og den afledte klasse. | I C forekommer overbelastning inden for samme klasse. |
Indbindingstid | |
Bindningen af det tilsidesatte metodekald til dets definition sker ved kørsel. | Bindningen af det overbelastede metodekald til dets definition sker på kompileringstidspunktet. |
Synonymer | |
Overriding kaldes runtime polymorfi, dynamisk polymorfi eller sen binding. | Overbelastning kaldes kompileringstidspolymorfi, statisk polymorfi eller tidlig binding. |
Opsummering – Tilsidesættelse vs overbelastning i C
Tilsidesættelse og overbelastning er to typer polymorfi. Forskellen mellem tilsidesættelse og overbelastning i C er, at bindingen af det tilsidesatte metodekald til dets definition sker ved kørsel, mens bindingen af det overbelastede metodekald til dets definition sker på kompileringstidspunktet.