Hvordan bruke virtuell metode i C#

Hvordan bruke virtuell metode i C#
Virtuelle metoder er et viktig trekk ved objektorienterte programmeringsspråk som C#. De lar klasser definere metoder som kan overstyres av avledede klasser, og gir en måte for klasser å tilpasse oppførselen til foreldreklassene sine.

Hva er virtuell metode i C#

Virtuelle metoder i C# er metoder som er erklært i en baseklasse og kan overstyres av avledede klasser. Med andre ord, en virtuell metode er en metode som kan omdefineres i en underklasse, her er syntaks for den:

Offentlig virtuelt tomrom ()

// Metodeimplementering

Det virtuelle nøkkelordet indikerer at denne metoden kan overstyres av en avledet klasse, og når en avledet klasse overstyrer en virtuell metode, gir den sin egen implementering av metoden.

For å overstyre en virtuell metode i en avledet klasse, inkluderer du det overstyring av nøkkelordet i metodesignaturen og nedenfor er syntaks for det:

Offentlig overstyring ugyldig ()

// Metodeimplementering

Overstyring av nøkkelordet indikerer at denne metoden overstyrer en virtuell metode i foreldreklassen. Her er et eksempel kodebit som demonstrerer bruk av virtuelle metoder i C#:

ved hjelp av system;
// definere en baseklasse som heter beregning
Klasseberegning

// definere en virtuell add -metode som tar to heltall og returnerer et heltallsresultat
public virtual int add (int x, int y)

returner x + y; // Returner summen av de to inngangs heltallene


// Definer en avledet klasse som heter CustomCalculation som arver fra beregning
Klassen CustomCalculation: Beregning

// Overstyr baseklassens tilleggsmetode
Offentlig overstyring int add (int x, int y)

if (x> 10 || y> 10) // Hvis noen av inngangsintallene er større enn 10

Returner x - y; // trekke fra X og returnere resultatet

ellers // hvis ingen av inngangene er større enn 10

Returbase.Legg til (x, y); // Ring baseklassens ADD -metode for å returnere summen av de to inngangsartiklene



Klasseprogram

statisk tomrom (streng [] args)

// Opprett en forekomst av baseklassen som heter beregning
Beregning calc = ny beregning ();
// Lag en forekomst av den avledede klassen som heter CustomCalculation
CustomCalculationCustomCalc = ny CustomCalculation ();
// Ring den virtuelle add -metoden på basisberegningsobjektet
int resultat1 = beregnet.Legg til (5, 7);
Konsoll.WritLine ($ "Resultat1: resultat1"); // OUTPUT: Resultat1: 12
// Ring den overstyrte ADD -metoden på CustomCalculation -objektet
int resultat2 = CustomCalc.Legg til (12, 7);
Konsoll.WritLine ($ "Resultat2: resultat2"); // OUTPUT: Resultat2: 5

I dette eksemplet har vi en baseklasse kalt beregning med en virtuell metode som heter Add som ganske enkelt legger til to heltall sammen. Vi har også en avledet klasse som heter CustomCalculation som overstyrer ADD -metoden, men bare når summen av de to tallene er større enn 10.

I den overstyrte tilleggsmetoden sjekker vi om enten x eller y er større enn 10. Hvis denne tilstanden er sann, returnerer vi forskjellen mellom x og y, og hvis tilstanden er falsk, kaller vi base implementering av add -metoden ved hjelp av basisnøkkelordet.

I hovedmetoden oppretter vi et beregningsobjekt og et tilpassetalkuleringsobjekt. Vi kaller først den virtuelle add -metoden på baseberegningsobjektet, og passerer 5 og 7 som argumenter. Dette skal resultere i en sum på 12 og vi kaller deretter den overstyrte add -metoden på CustomCalculation -objektet, og passerer i 12 og 7 som argumenter. Dette bør resultere i en forskjell på 5, siden summen av de to tallene er større enn 10.

Som du ser, kalles den overstyrte add -metoden i CustomCalculation -klassen bare når tilstanden er falsk. Når tilstanden er sann, gir den overstyrte metoden en annen implementering av ADD -metoden som trekker det andre nummeret fra det første, nedenfor er utdataene til koden:

Konklusjon

Den virtuelle metoden i C# gir en måte for klasser å definere metoder som kan tilpasses av avledede klasser. Ved å merke en metode som virtuell, tillater du avledede klasser å gi sin egen implementering av metoden, og hans er et kraftig trekk ved objektorientert programmering som gir større fleksibilitet og gjenbrukbarhet i kode.