De principes van polymorf gedrag onderzoeken

Voltooid

Met polymorfisme kunnen objecten van verschillende typen worden behandeld als objecten van een gemeenschappelijk basistype. Met dit gedrag kunt u code schrijven die werkt met objecten van meerdere typen zonder dat u het specifieke type tijdens het compileren kent.

Denk bijvoorbeeld aan een basisklasse Shape met afgeleide klassen Circle en Rectangle. U kunt een lijst met Shape objecten maken en exemplaren van Circle en Rectangle toevoegen. Wanneer u de lijst doorgeeft, kunt u de methode Draw aanroepen voor elk object zonder het specifieke type van het object te kennen. Dit proces is een voorbeeld van polymorf gedrag in actie.

Benaderingen voor polymorfisme in C#

C#-ontwikkelaars kunnen polymorfisme implementeren met behulp van een van de volgende benaderingen:

  • Polymorfisme op basis van overname: Met klasseovername in C# kan een afgeleide klasse leden overnemen van een basisklasse. Leden van de basisklasse kunnen worden overschreven in de afgeleide klasse om specifieke implementaties te bieden. Wanneer u exemplaren van de basisklasse maakt die verwijzen naar de afgeleide klassetypen, hebt u toegang tot leden van de afgeleide klasse op basis van de basisklasseobjecten. Polymorfisme op basis van overname is een veelgebruikte manier om polymorfisme in C# te implementeren.

  • Op interface gebaseerde polymorfisme: Een interface in C# definieert een contract dat klassen kunnen implementeren. Wanneer een klasse een interface implementeert, ontvangt de klasse een set eigenschappen en methoden die moeten worden geïmplementeerd. Deze vereiste maakt polymorf gedrag mogelijk, waarbij een interfaceverwijzing objecten van verschillende klassen kan doorsturen om de set eigenschappen en methoden te implementeren. Polymorfisme op basis van een interface is een andere veelgebruikte manier om polymorfisme in C# te implementeren.

Overbelasting van methode versus methode overschrijven

Overbelasting van methoden en methodeoverschrijven zijn twee veelvoorkomende technieken voor het implementeren van methodeaanroepen die verschillende gedragingen produceren. Hier volgt een vergelijking van de twee technieken:

  • Overbelasting van methoden: met methode-overbelasting kunt u meerdere methoden definiëren met dezelfde naam, maar verschillende parameters in dezelfde klasse. De methode die moet worden aangeroepen, wordt tijdens het compileren bepaald op basis van de methodehandtekening. Overbelasting van methoden wordt vaak aangeduid als gecompileerd polymorfisme.

  • Methode overschrijven: Door methode te overschrijven kan een afgeleide klasse een specifieke implementatie bieden van een methode die al is gedefinieerd in de basisklasse. De aan te roepen methode wordt tijdens runtime bepaald op basis van het werkelijke type van het object. Methode overschrijven is een voorbeeld van runtime polymorfisme.

Deze training richt zich op het overschrijven van methoden. Dit is een belangrijk aspect van polymorfisme in C#.

Principes van polymorfisme in C#

Polymorfisme is gebaseerd op de volgende principes:

  • Methode overschrijven: Door methode te overschrijven kan een afgeleide klasse een specifieke implementatie bieden van een methode die al is gedefinieerd in de basisklasse. Deze mogelijkheid wordt mogelijk gemaakt door overname en is een belangrijk aspect van runtime polymorfisme.
  • Virtuele en abstracte methoden: het virtuele trefwoord wordt gebruikt om methoden in de basisklasse te declareren die kunnen worden overschreven in afgeleide klassen. Het abstracte trefwoord wordt gebruikt voor het declareren van methoden die moeten worden overschreven in afgeleide klassen.
  • Basisklasseverwijzingen: Met polymorfisme kan een basisklasseverwijzing verwijzen naar objecten van afgeleide klassen. Dit overnamemechanisme maakt het aanroepen van overschreven methoden in afgeleide klassen mogelijk via de verwijzing naar de basisklasse.
  • Polymorfisme op basis van interface: Interfaces definiëren een contract dat klassen kunnen implementeren. Met dit contract kunnen verschillende klassen uniform worden behandeld via een gemeenschappelijke interface, waardoor losse koppeling en flexibiliteit worden bevorderd.

Voordelen van polymorfisme

  • Herbruikbaarheid van code: Polymorphisme bevordert hergebruik van code door dezelfde code toe te staan om met verschillende soorten objecten te werken.

  • Flexibiliteit en onderhoudbaarheid: Polymorfisme verbetert flexibiliteit en onderhoudbaarheid door de code te ontkoppelen die gebruikmaakt van objecten uit de code die de objecten definieert.

  • Uitbreidbaarheid: Polymorfisme maakt het eenvoudiger om het systeem uit te breiden door nieuwe klassen toe te voegen die dezelfde interface implementeren of overnemen van dezelfde basisklasse.

Samenvatting

Polymorfisme is een belangrijk concept in objectgeoriënteerde programmering die flexibiliteit, herbruikbaarheid en onderhoudbaarheid in code mogelijk maakt. Door inzicht te krijgen in de principes van polymorfisme en de implementatie ervan in C#, kunt u modulaire en uitbreidbare toepassingen maken die na verloop van tijd gemakkelijker te onderhouden en ontwikkelen zijn.