Undersøk prinsippene for polymorf atferd

Fullført

Polymorfisme gjør at objekter av forskjellige typer kan behandles som objekter av en felles basistype. Denne virkemåten gjør det mulig å skrive kode som fungerer med objekter av flere typer uten å vite den bestemte typen på kompileringstidspunktet.

Vurder for eksempel en grunnleggende klasse Shape med avledede klasser Circle og Rectangle. Du kan opprette en liste over Shape objekter og legge til forekomster av Circle og Rectangle til den. Når du itererer over listen, kan du kalle Draw metoden for hvert objekt uten å vite den bestemte typen objekt. Denne prosessen er et eksempel på polymorf virkemåte i aksjon.

Tilnærminger til polymorfisme i C#

C#-utviklere kan implementere polymorfisme ved hjelp av én av følgende fremgangsmåter:

  • Arvebasert polymorfisme: Klassearv i C# gjør det mulig for en avledet klasse å arve medlemmer fra en basisklasse. Medlemmer av basisklassen kan overstyres i den avledede klassen for å gi bestemte implementeringer. Når du oppretter forekomster av basisklassen som refererer til de avledede klassetypene, kan du få tilgang til medlemmer av den avledede klassen fra basisklasseobjektene. Arvebasert polymorfisme er en vanlig måte å implementere polymorfisme på i C#.

  • Grensesnittbasert polymorfisme: Et grensesnitt i C# definerer en kontrakt som klassene kan implementere. Når en klasse implementerer et grensesnitt, mottar klassen et sett med egenskaper og metoder som det kreves for å implementere. Dette kravet gjør det mulig for polymorfe virkemåter, der en grensesnittreferanse kan lede objekter fra ulike klasser til å implementere settet med egenskaper og metoder. Grensesnittbasert polymorfisme er en annen vanlig måte å implementere polymorfisme på i C#.

Overlasting av metode kontra overstyring av metode

Metodeoverlasting og overstyring av metode er to vanlige teknikker for implementering av metodekall som produserer ulike virkemåter. Her er en sammenligning av de to teknikkene:

  • Metodeoverlasting: Med metodeoverlasting kan du definere flere metoder med samme navn, men forskjellige parametere i samme klasse. Metoden som skal kalles, bestemmes på kompileringstidspunktet basert på metodesignaturen. Metodeoverlasting kalles ofte kompileringstidspolymorfisme.

  • Overstyring av metode: Overstyring av metode gjør det mulig for en avledet klasse å gi en bestemt implementering av en metode som allerede er definert i basisklassen. Metoden som skal kalles, bestemmes ved kjøretid basert på den faktiske typen objekt. Metodeoverstyring er et eksempel på runtime polymorfisme.

Denne opplæringen fokuserer på overstyring av metoden, som er et viktig aspekt ved polymorfisme i C#.

Prinsipper for polymorfisme i C#

Polymorfisme er basert på følgende prinsipper:

  • Overstyring av metode: Overstyring av metode gjør det mulig for en avledet klasse å gi en bestemt implementering av en metode som allerede er definert i basisklassen. Denne funksjonen er muliggjort av arv og er et viktig aspekt ved kjøretid polymorfisme.
  • Virtuelle og abstrakte metoder: Det virtuelle nøkkelordet brukes til å deklarere metoder i basisklassen som kan overstyres i avledede klasser. Det abstrakte nøkkelordet brukes til å deklarere metoder som må overstyres i avledede klasser.
  • Basisklassereferanser: Polymorfisme gjør det mulig for en basisklassereferanse å peke til objekter i avledede klasser. Denne arvemekanismen muliggjør aktivering av overstyrte metoder i avledede klasser gjennom referansen til grunnklassen.
  • Grensesnittbasert polymorfisme: Grensesnitt definerer en kontrakt som klasser kan implementere. Denne kontrakten gjør at ulike klasser kan behandles jevnt gjennom et felles grensesnitt, noe som fremmer løs kobling og fleksibilitet.

Fordeler med polymorfisme

  • Kodegjenbruksevne: Polymorfisme fremmer gjenbruk av kode ved å la den samme koden fungere med ulike typer objekter.

  • Fleksibilitet og vedlikehold: Polymorfisme forbedrer fleksibiliteten og vedlikeholdsevnen ved å koble fra koden som bruker objekter fra koden som definerer objektene.

  • Utvidelse: Polymorfisme gjør det enklere å utvide systemet ved å legge til nye klasser som implementerer samme grensesnitt eller arver fra samme basisklasse.

Sammendrag

Polymorfisme er et viktig konsept i objektorientert programmering som muliggjør fleksibilitet, gjenbruk og vedlikehold i kode. Ved å forstå prinsippene for polymorfisme og implementeringen i C#, kan du opprette modulære og utvidbare programmer som er enklere å vedlikeholde og utvikle seg over tid.