Granska principerna för polymorft beteende

Fullbordad

Polymorfism gör att objekt av olika typer kan behandlas som objekt av en gemensam bastyp. Med det här beteendet kan du skriva kod som fungerar med objekt av flera typer utan att känna till den specifika typen vid kompileringstillfället.

Anta till exempel att en basklass Shape med härledda klasser Circle och Rectangle. Du kan skapa en lista över Shape objekt och lägga till instanser av Circle och Rectangle till den. När du itererar över listan kan du anropa metoden Draw för varje objekt utan att känna till objektets specifika typ. Den här processen är ett exempel på polymorft beteende i praktiken.

Metoder för polymorfism i C#

C#-utvecklare kan implementera polymorfism med någon av följande metoder:

  • Arvsbaserad polymorfism: Klassarv i C# gör det möjligt för en härledd klass att ärva medlemmar från en basklass. Medlemmar i basklassen kan åsidosättas i den härledda klassen för att tillhandahålla specifika implementeringar. När du skapar instanser av basklassen som refererar till de härledda klasstyperna kan du komma åt medlemmar i den härledda klassen från basklassobjekten. Arvsbaserad polymorfism är ett vanligt sätt att implementera polymorfism i C#.

  • Gränssnittsbaserad polymorfism: Ett gränssnitt i C# definierar ett kontrakt som klasser kan implementera. När en klass implementerar ett gränssnitt får klassen en uppsättning egenskaper och metoder som krävs för att implementera. Det här kravet möjliggör polymorft beteende, där en gränssnittsreferens kan dirigera objekt i olika klasser för att implementera uppsättningen egenskaper och metoder. Gränssnittsbaserad polymorfism är ett annat vanligt sätt att implementera polymorfism i C#.

Metodöverlagring jämfört med åsidosättning av metod

Metodöverlagring och metodöverbelastning är två vanliga metoder för att implementera metodanrop som ger olika beteenden. Här är en jämförelse av de två teknikerna:

  • Metodöverlagring: Med metodöverlagring kan du definiera flera metoder med samma namn men olika parametrar i samma klass. Den metod som ska anropas bestäms vid kompileringstillfället baserat på metodsignaturen. Metodöverlagring kallas ofta kompileringstidspolymorfism.

  • Metodöversidosättning: Metoden åsidosätter gör att en härledd klass kan tillhandahålla en specifik implementering av en metod som redan har definierats i basklassen. Den metod som ska anropas bestäms vid körning baserat på objektets faktiska typ. Metodöversidosättning är ett exempel på körningspolymorfism.

Den här utbildningen fokuserar på metodöversidosättning, vilket är en viktig aspekt av polymorfism i C#.

Polymorfismens principer i C#

Polymorfism baseras på följande principer:

  • Metodöverskrivning gör det möjligt för en härledd klass att tillhandahålla en specifik implementering av en metod som redan definierats i basklassen. Den här funktionen möjliggörs genom arv och är en viktig aspekt av körningspolymorfism.
  • Virtuella och abstrakta metoder: Det virtuella nyckelordet används för att deklarera metoder i basklassen som kan åsidosättas i härledda klasser. Det abstrakta nyckelordet används för att deklarera metoder som måste åsidosättas i härledda klasser.
  • Basklassreferenser: Polymorfism tillåter att en basklassreferens pekar på objekt i härledda klasser. Den här arvsmekanismen möjliggör anrop av åsidosatta metoder i härledda klasser via basklassreferensen.
  • Gränssnittsbaserad polymorfism: Gränssnitt definierar ett kontrakt som klasser kan implementera. Detta kontrakt gör att olika klasser kan behandlas enhetligt genom ett gemensamt gränssnitt, vilket främjar lös koppling och flexibilitet.

Fördelar med polymorfism

  • Återanvändning av kod: Polymorfism främjar kodåteranvändning genom att tillåta att samma kod fungerar med olika typer av objekt.

  • Flexibilitet och underhåll: Polymorfism förbättrar flexibiliteten och underhållsbarheten genom att kod som använder objekt från koden som definierar objekten avkodas.

  • Utökningsbarhet: Polymorfism gör det enklare att utöka systemet genom att lägga till nya klasser som implementerar samma gränssnitt eller ärver från samma basklass.

Sammanfattning

Polymorfism är ett nyckelkoncept inom objektorienterad programmering som möjliggör flexibilitet, återanvändning och underhåll i kod. Genom att förstå polymorfismens principer och dess implementering i C# kan du skapa modulära och utökningsbara program som är enklare att underhålla och utveckla över tid.