Hvordan bruke polymorfisme i C#

Hvordan bruke polymorfisme i C#
Polymorfisme er mye brukt i objektorientert programmeringskonsept. Polymorfisme gjør at en avledet klasse har flere former som kan behandles som baseklasse. C# støtter polymorfisme gjennom forskjellige mekanismer som overbelastning av metode og overstyring av metoden. Denne artikkelen dekker bruken av polymorfisme i C#.

Innholdsfortegnelse

  • Hva er polymorfisme i C#
  • Typer polymorfisme i C#
  • Metode overbelastning
  • Metode overstyrer
  • Eksempler på polymorfisme i C#
  • Hvordan bruke polymorfisme i C#
  • Konklusjon

Hva er polymorfisme i C#

Polymorfisme kommer fra to greske ord: Poly og morph. Ordet Poly her står for mange, og morph står for former. Det er objektets evne til å programmeres å skaffe forskjellige former.

Polymorfisme muliggjør behandling av objekter av forskjellige klasser som de kom fra samme klasse. Dette kan gjøres ved hjelp av arvekonseptet, da det lar avledede klasser ta eller arve egenskapene til baseklassen.

Typer polymorfisme i C#

Polymorfisme kan klassifiseres i to typer basert på når den oppstår:

  • Kompilere tid [metode overbelastning]
  • Runtime [metode overstyrer]

Metode overbelastning

Metodeoverbelastning kan definere flere metoder med samme navn, men som inneholder forskjellige parametere. Kompilatoren bestemmer metoden som kommer til å bli kalt basert på argumenter gitt til metoden. Ved hjelp av overbelastning av metode kan vi gjøre oppgaver som er like, men har forskjellige inngangsparametere.

Metode overstyrer

Metode som overstyrer i C# er en teknikk som gjør at en avledet klasse kan gi sin egen implementering av en metode som allerede er levert av baseklassen. Metodeoverstyring er akkurat som den virtuelle funksjonen til C++. Når en metode i en avledet klasse har samme navn, samme returtype og samme parametere som en metode i sin baseklasse, sies metoden i den avledede klassen å overstyre metoden i baseklassen.

I polymorfisme skal den overstyrte basemetoden være virtuell, abstrakt eller overstyring. Overstyringsmetoder implementerer eksisterende baseklassemedlemmer på en ny måte. Metodeoverstyring oppnås ved å bruke de virtuelle og overstyring av nøkkelord.

Eksempler på polymorfisme i C#

Nedenfor er et eksempel på kode som forklarer begge metodene som overstyrer og overbelastet i C#:

Eksempel 1: Metodeoverbelastning

Her, i eksemplet nedenfor, har vi definert flere metoder i en enkelt klasse. Alle disse metodene har samme navn, men inneholder forskjellige parametere.

ved hjelp av system;
Klasseprogram

void Calculatesum (int num1, int num2)

Konsoll.WritLine ($ "summen av num1 og num2 er num1 + num2");

tomrom kalkulatesum (dobbelt num1, dobbelt num2)

Konsoll.WritLine ($ "summen av num1 og num2 er num1 + num2");

statisk tomrom (streng [] args)

Program Program = New Program ();
int intnum1 = 1;
int intnum2 = 2;
dobbel doublenum1 = 12.5;
dobbel doublenum2 = 7.5;
program.Kalkulatesum (intnum1, intnum2);
program.Kalkulatesum (doublenum1, doublenum2);

Ovennevnte kode gir to tall til sum, og den viser Metode overbelastning I C#. De Kalkulatesum Metoden er overbelastet for å akseptere to heltallparametere og to doble parametere, henholdsvis.

Hovedmetoden skaper en forekomst av programklassen og kaller kalkulatmetoden to ganger, en gang med to heltallsargumenter og en gang med to doble argumenter.

Når programmet kjører, skriver det ut summen av de to tallene som sendes til Kalkulatesum Metode ved hjelp av streng interpolasjon for å opprette utgangsmeldingen. Følgende utgang kan sees på konsoll:

Eksempel 2: Metode overordnet

Dette eksemplet demonstrerer begrepet metode som overstyrer, der en avledet klasse kan gi sin egen implementering av en metode som er arvet fra baseklassen.

ved hjelp av system;
offentlig klasseform

offentlig virtuell tomrom ()

Konsoll.WritLine ("tegne en form");


Rektangel i offentlig klasse: form

Offentlig overstyring av tomrom ()

Konsoll.WritLine ("Tegning et rektangel");


Public Class Program

public static void main (String [] args)

Formform = ny form ();
form.Tegne();
Rektangel rektangel = nytt rektangel ();
rektangel.Tegne();

Her er en baseklasse som heter Formklasse. Formeklassen inneholder en virtuell metode som heter Tegne. Her er et virtuelt søkeord en indikasjon på at en avledet klasse kan overstyre den definerte metoden.

Rektangelklassen overstyrer Tegne metode og er avledet fra formklassen. Rektangelklassen har sitt eget sett med egenskaper for implementering. I dette tilfellet er trekkmetoden for rektangelklassetrykk Tegne et rektangel i stedet for Tegne en form.

Neste, in Hoved(), En forekomst av formklassen opprettes, og dens trekkmetode kalles. Da opprettes en forekomst av rektangelklassen, og dens trekkmetode kalles.

Fordi rektangelklassen overstyrer trekkmetoden i formklassen, kalles når vi kaller trekkmetoden på rektangelobjekt Tegne et rektangel skrives ut til konsollen. Når programmet kjører, vil det sende ut:

Hvordan bruke polymorfisme i C#

Etter å ha kjent med polymorfisme -konseptet i C#, vil vi nå dekke trinnene for å bruke det i C# -programmering.

Trinn 1: Definer baseklassen

Det første trinnet er å definere baseklassen som inneholder metodene eller egenskapene som vil bli delt av alle avledede klasser. Baseklassen er definert ved hjelp av klasse nøkkelord:

Public Class Animal

offentlig virtuelt tomrom Makesound ()

Konsoll.WritLine ("Dyret lager en lyd");

Ovennevnte kode inneholder en baseklasse Dyr som har en virtuell metode Gjør. Virtuelt søkeord viser at den avledede klassen vil overstyre den definerte metoden.

Trinn 2: Definer de avledede klassene

Neste trinn er å definere de avledede klassene som kommer fra baseklassen. I C#kan vi definere en avledet klasse ved hjelp av ":" operatør.

Public Class Dog: Dyr

Offentlig overstyring av tomrom Makesound ()

Konsoll.WritLine ("Hunden bjeffer");


Offentlig klasse katt: dyr

Offentlig overstyring av tomrom Makesound ()

Konsoll.WritLine ("The Cat Meows");

Eksemplet ovenfor inneholder to drivklasser Hund og Katt, Og begge disse klassene tar eiendommer fra baseklassen som heter dyr. Begge klasser overstyrer Gjør Metode med implementeringen.

Trinn 3: Bruk polymorfisme

Det siste trinnet er å bruke polymorfisme i kode. Nå vil vi definere forekomster av de avledede klassene og kalle metodene deres ved hjelp av baseklassens referanse.

Dyr myanimal = nytt dyr ();
Animal MyDog = New Dog ();
Animal MyCat = New Cat ();
myanimal.Makesound ();
min hund.Makesound ();
katten min.Makesound ();

Her opprettet vi forekomster av dyret, hunden og katteklassene. Etter det, Gjør Metoden kalles på hver forekomst. Siden Gjør Metoden er virtuell, den faktiske implementeringen som blir kalt avhenger av den faktiske typen forekomst. Dette betyr at når vi ringer MyDog.Makesound () eller Mycat.Makesound (), Gjør metoden vil bli kalt i henholdsvis hund eller katteklasse.

Eksempelkode

Følgende er den kombinerte koden for de ovennevnte trinnene:

ved hjelp av system;
Public Class Animal

offentlig virtuelt tomrom Makesound ()

Konsoll.WritLine ("Dyret lager en lyd");


Public Class Dog: Dyr

Offentlig overstyring av tomrom Makesound ()

Konsoll.WritLine ("Hunden bjeffer");


Offentlig klasse katt: dyr

Offentlig overstyring av tomrom Makesound ()

Konsoll.WritLine ("The Cat Meows");


Public Class Program

Offentlig statisk tomrom Main ()

Dyr myanimal = nytt dyr ();
Animal MyDog = New Dog ();
Animal MyCat = New Cat ();
myanimal.Makesound ();
min hund.Makesound ();
katten min.Makesound ();

Etter å ha kjørt ovennevnte kode, kan følgende utgang sees på konsollen:

Konklusjon

Å bruke polymorfisme i C# en kode kan skrives som administrerer flere objekttyper. I C#kan vi bruke polymorfisme ved å definere en baseklasse, lage avledede klasser som arver fra baseklassen, og bruke baseklassens referanse for å kalle metodene til de avledede klassene. Ved å følge trinnene som er beskrevet i artikkelen ovenfor, kan hvem som helst bruke polymorfisme -konseptet i C#.