Innholdsfortegnelse
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:
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;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;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 AnimalOvennevnte 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: DyrEksemplet 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 ();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;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#.