C# Virtual

C# Virtual
En virtuell funksjon i C# kan overstyres i underklasser. En virtuell funksjon i C# har både implementering av foreldre og barneklasse. Hver gang kjernefunksjonaliteten til en metode er nesten den samme, krever imidlertid underklassen ekstra evne, og den brukes. Den virtuelle setningen brukes til å definere en virtuell funksjon i superklassen, som deretter blir overstyrt av overstyringsfrasen i underklassen. Hver gang en funksjon er spesifisert som en virtuell funksjon i en superklasse, kan underklassen velge om du vil overstyre den eller ikke. Den overordnede metodikken gjør at en funksjon har mange former. Som et resultat er det en god illustrasjon av polymorfisme. La oss komme i gang med å bruke noen av C# -eksemplene for å utdype arbeidet med det "virtuelle" nøkkelordet for å opprette og bruke de virtuelle funksjonene i koden. Vi må opprette en C# -fil der vi kan legge til koden for virtuelle funksjoner med "Touch" -spørsmålet som nedenfor.

Eksempel nr. 01

La oss komme i gang med det mest grunnleggende eksemplet på å bruke den virtuelle metoden i C#. Vi bruker systembiblioteket innenfor koden vår i den første linjen ved å bruke nøkkelordet "Bruke" som vist. Etter dette opprettet vi en offentlig baseklasse som heter “Parent” ved hjelp av nøkkelordet “klasse”. Denne baseklassen inneholder en enkelt funksjon som heter “show” av tomromstype og offentlig tilgangsmodifiserer, i.e., virtuell funksjon.

Denne virtuelle funksjonen inneholder en enkel WritLine () -funksjonserklæring fra konsollklassen for å skrive ut den enkle tekstsetningen ved utførelse på skjermen vår, i.e., “Virtuell metode i foreldreklasse”. En annen offentlig klasse som heter “Child” ble opprettet etter det. Som vist har denne klassen blitt avledet fra "foreldre" -klassen. Metoden “Show” er implementert i den som har blitt overstyrt fra baseklassen “Parent” ved å bruke nøkkelordet “Override” etterfulgt av “Void” returtypen og startet med “Public” Access Modifier.

Ettersom denne virtuelle funksjonen har blitt overstyrt fra baseklassen, må den inneholde litt ekstra implementering. Dermed har vi brukt WritLine () -erklæringen fra konsollklassen her for å vise en ny tekststreng ved skallet som sier “Overskridende virtuell metode i barneklasse”. Både foreldre- og barneklassefunksjonene har samme navn, men litt annen implementering. All denne implementeringen vil fungere etter å ha brukt Main () -metoden i koden. Så vi har laget en ny uavhengig klasse som heter “New” med nøkkelordet “klasse”. Denne klassen inneholder en statisk type Main () -metode med en tomromstype. Utførelsen startet fra å opprette et foreldreklasseobjekt “O1” med søkeordet “nytt” etterfulgt av klassenavnet. Vi har brukt dette nye objektet O1 for å kalle den virtuelle funksjonen “show” fra foreldreklassen. Etter dette har vi opprettet et annet objekt O2 for barneklassen ved å bruke søkeordet "nytt", som starter med baseklassenavnet og slutter med barneklassenavnet. Dette viser at den faktiske arven har funnet sted i C# -koden. Child Class -objektet “O2” har blitt brukt til å kalle den overstyrte “show” virtuelle funksjonen til barneklassen. Funksjonssamtalen må ikke blandes sammen mens du utfører Main () -metoden. Vi bør også få showet () funksjonen til foreldreklassen utført først og deretter showet () -funksjonen til Child Class -funksjonen. Klassen New er avsluttet her, og koden vår er fullført nå.

Etter å ha lagret denne koden i tekstredigereren, returnerte vi til terminalen da koden vår må samles med “MCS” C# Compiler. Etter den vellykkede samlingen har vi prøvd utførelsen av den "exe" -filen som nettopp er opprettet i hjemmemappen med "mono" runtime of c#. Den utførte koden og viste strengen til den virtuelle metoden fra foreldreklassen først og deretter strengteksten til den overstyrte showet () metoden i barneklassen.

Eksempel # 02

La oss gjøre koden vår litt avansert og forskjellig fra eksemplet ovenfor. Vi har startet det med bruk av systembiblioteket i den første kodelinjen. Etter det benyttet vi oss. Den første klassen, "rektangel", er en foreldreklasse i de to andre klassene. Vi har erklært 3 offentlige variabler med dobbel type "H", “W” og “R” i henholdsvis med 10, 4 og 3. En konstant variabel “P” med dobbel type er blitt erklært med en innebygd “PI” -verdi av matematikk. En virtuell metode “Area ()” av dobbel returtype er blitt definert her som har returnert multiplikasjonsresultatet av “H” og “W” til hovedfunksjonen ().e., Området til et rektangel er, høyden multipliserer med bredde. Klassen "firkant" er avledet fra "rektangel" -klassen. Denne klassen overstyrer den virtuelle funksjonen "området" fra baseklassen og returnerer multiplikasjonsresultatet av "h" og "h", i.e., Området på en firkant er den ene siden multiplisert med andre side eller høyde i høyden.

Deretter har vi en avledet klasse "sirkel" som overstyrer den virtuelle funksjonen "området" fra baseklasse rektangel. Denne funksjonen returnerer multiplikasjonsresultatet av “p” og “r*r,” i.e., Området til en sirkel er "pi" multiplisert med kvadratet av en radius. Tre klasser er definert og implementert i koden fullt ut. Nå er det svingen på Main () -funksjonen til C# for å starte utførelsen og gradvis kjøre klassene. Innenfor Main () -metoden for testklasse har vi laget et objekt “O1” av foreldreklasse rektangel på første linje ved å bruke navnet på en klasse med det “nye” nøkkelordet.

Ved hjelp av rektangelklassen har vi laget objekter O2 og O3 for henholdsvis avledede klasser kvadrat og sirkel. Tre uttalelser fra WritLine () fra konsollklassen har blitt brukt her for å vise henholdsvis området rektangel, firkant og sirkel. For å beregne området for tre former, har vi brukt de respektive objektene i hver formklasse. Disse objektene har kalt sine respektive virtuelle funksjoner definert i rektangelklassen og overstyrt i de avledede klassene, i.e., Firkant og sirkel.

Det er på tide å kompilere denne nyopprettede C# -koden i skallet med “MCS” -kommandoinstruksjonen. Etter det, bruk Mono Runtime -instruksjonen til å utføre “EXE” -filen som er generert som et resultat av samlingen. Ved utførelse av denne "exe" -filen for koden, har vi fått området rektangel, firkant og sirkel som vises på skjermen vår, da vi har brukt den virtuelle funksjonen i en klasse og overstyrte den i de avledede klassene.

Konklusjon

Vi har beskrevet hvordan en enkel C# virtuell funksjon kan brukes i C# -koden og overstyrt i underklassene. Vi har demonstrert at det fungerer i denne artikkelen ved hjelp av noen eksempler. Det første eksemplet illustrerte bruken av virtuell funksjon innenfor det enkelt arvsprogram, mens det andre eksemplet viser at ved hjelp av flere arv. Slik har vi vist hvordan en enkel metode kan brukes til å utføre flere beregninger med enkeltdefinisjonen av en funksjon i C#.