Undersøg principperne for polymorf adfærd

Fuldført

Polymorfi gør det muligt at behandle objekter af forskellige typer som objekter af en fælles basistype. Denne funktionsmåde giver dig mulighed for at skrive kode, der fungerer sammen med objekter af flere typer, uden at kende den specifikke type på kompileringstidspunktet.

Overvej f.eks. en basisklasse Shape med afledte klasser Circle og Rectangle. Du kan oprette en liste over Shape objekter og føje forekomster af Circle og Rectangle til den. Når du gentager listen, kan du kalde metoden Draw for hvert objekt uden at kende objektets specifikke type. Denne proces er et eksempel på polymorf funktionsmåde i handling.

Tilgange til polymorfi i C#

C#-udviklere kan implementere polymorfi ved hjælp af en af følgende fremgangsmåder:

  • Nedarvningsbaseret polymorfi: Klassearvning i C# gør det muligt for en afledt klasse at nedarve medlemmer fra en basisklasse. Medlemmer af basisklassen kan tilsidesættes i den afledte klasse for at angive specifikke implementeringer. Når du opretter forekomster af basisklassen, der refererer til de afledte klassetyper, kan du få adgang til medlemmer af den afledte klasse fra basisklasseobjekterne. Arvebaseret polymorfi er en almindelig måde at implementere polymorfi på i C#.

  • Grænsefladebaseret polymorfi: En grænseflade i C# definerer en kontrakt, som klasser kan implementere. Når en klasse implementerer en grænseflade, modtager klassen et sæt egenskaber og metoder, som den skal implementere. Dette krav giver mulighed for polymorf funktionsmåde, hvor en grænsefladereference kan dirigere objekter med forskellige klasser til at implementere sættet af egenskaber og metoder. Grænsefladebaseret polymorfi er en anden almindelig måde at implementere polymorfi på i C#.

Overbelastning af metoden i forhold til tilsidesættelse af metoden

Overbelastning af metoder og tilsidesættelse af metoder er to almindelige teknikker til implementering af metodekald, der giver forskellige funktionsmåder. Her er en sammenligning af de to teknikker:

  • Overbelastning af metoden: Metodeoverbelastning giver dig mulighed for at definere flere metoder med samme navn, men med forskellige parametre i samme klasse. Den metode, der skal kaldes, bestemmes på kompileringstidspunktet baseret på metodesignaturen. Overbelastning af metoden kaldes ofte kompileringstidspolymorfi.

  • Tilsidesættelse af metode: Tilsidesættelse af metoden gør det muligt for en afledt klasse at levere en bestemt implementering af en metode, der allerede er defineret i basisklassen. Den metode, der skal kaldes, bestemmes på kørselstidspunktet baseret på objektets faktiske type. Tilsidesættelse af metoden er et eksempel på kørselspolymorfi.

I denne oplæring fokuseres der på tilsidesættelse af metoden, hvilket er et vigtigt aspekt af polymorfi i C#.

Principper for polymorfi i C#

Polymorfi er baseret på følgende principper:

  • Tilsidesættelse af metode: Tilsidesættelse af metoden gør det muligt for en afledt klasse at levere en bestemt implementering af en metode, der allerede er defineret i basisklassen. Denne egenskab er muliggjort af nedarvning og er et vigtigt aspekt af runtime polymorfi.
  • Virtuelle og abstrakte metoder: Det virtuelle nøgleord bruges til at deklarere metoder i basisklassen, der kan tilsidesættes i afledte klasser. Det abstrakte nøgleord bruges til at erklære metoder, der skal tilsidesættes i afledte klasser.
  • Referencer til basisklasse: Polymorfi tillader en reference til basisklassen for at pege på objekter for afledte klasser. Denne nedarvningsmekanisme muliggør aktivering af tilsidesatte metoder i afledte klasser via referencen til basisklassen.
  • Grænsefladebaseret polymorfi: Grænseflader definerer en kontrakt, som klasser kan implementere. Denne kontrakt gør det muligt for forskellige klasser at blive behandlet ensartet gennem en fælles grænseflade, der fremmer løs kobling og fleksibilitet.

Fordele ved polymorfi

  • Genbrug af kode: Polymorfi fremmer genbrug af kode ved at tillade, at den samme kode fungerer sammen med forskellige typer objekter.

  • Fleksibilitet og vedligeholdelse: Polymorfi øger fleksibiliteten og vedligeholdelsen ved at afkoble den kode, der bruger objekter, fra den kode, der definerer objekterne.

  • Udvidelse: Polymorfi gør det nemmere at udvide systemet ved at tilføje nye klasser, der implementerer den samme grænseflade eller arver fra den samme basisklasse.

Resumé

Polymorfi er et nøglebegreb i objektorienteret programmering, der muliggør fleksibilitet, genbrug og vedligeholdelse i kode. Ved at forstå principperne for polymorfi og dens implementering i C#kan du oprette modulopbyggede og udvidelige programmer, der er lettere at vedligeholde og udvikle over tid.