C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden
Wat Is Overerving in C#?
Overerving is een hoeksteen van C# objectgeoriënteerd ontwerp. Het laat een kindclass automatisch de velden en methodes van een ouderkass ontvangen, terwijl het kind nog steeds die gedrag kan overschrijven of uitbreiden. Dit bevordert herbruik van code, vereenvoudigt onderhoud en vestigt een duidelijke hiërarchie.
- Definieert ouder- en kindclasses.
- Kind overerven ouderleden.
- Kind kan overgeërfd gedrag wijzigen.
- Kind kan eigen leden toevoegen.
C# Overervingsvoorbeeld
Hieronder is een stapsgewijze demonstratie die laat zien hoe overerving te implementeren en protected leden te gebruiken.
Stap 1 – De Basisklass Wijzigen
Open Tutorial.cs en verander de Tutorial-class zodat de sleutelvelden protected zijn:

Het gebruik van protected zorgt ervoor dat alleen afgeleide classes direct toegang hebben tot deze velden.
Stap 2 – Een Afgeleide Class Maken
Voeg de volgende code toe aan Tutorial.cs na de basisklassdefinitie:

Uitleg:
- Declareer
Guru99Tutorialals kind vanTutorialmet de dubbele punt (:) syntaxis. - Voeg een methode
RenameTutorialtoe die een nieuwe waarde toewijst aanTutorialName. - Omdat
TutorialNameprotected is, kanGuru99Tutorialer toegang tot krijgen zelfs als het niet expliciet daar gedeclareerd is.
Stap 3 – De Afgeleide Class Gebruiken in Program.cs
Vervang de inhoud van Program.cs met het volgende:

using System;
namespace DemoApplication {
public class Tutorial {
protected int TutorialID;
protected string TutorialName;
public void SetTutorial(int pID, string pName) {
TutorialID = pID;
TutorialName = pName;
}
public string GetTutorial() {
return TutorialName;
}
}
public class Guru99Tutorial : Tutorial {
public void RenameTutorial(string pNewName) {
TutorialName = pNewName;
}
static void Main(string[] args) {
Guru99Tutorial pTutor = new Guru99Tutorial();
pTutor.RenameTutorial(".Net by Guru99");
Console.WriteLine(pTutor.GetTutorial());
Console.ReadKey();
}
}
}
Uitleg:
- Het programma instantieert
Guru99Tutorial, niet de basisklassTutorial. - Het roept
RenameTutorialaan om de titel te wijzigen. - Hoewel
GetTutorialgedefinieerd is in de basisklass, kan de afgeleide instantie het direct aanroepen.
Het draaien van deze code print:

Wat Is Polymorfisme in C#?
Polymorfisme laat een enkele interface verschillende onderliggende vormen vertegenwoordigen. In C# manifesteert dit zich vaak als methode-overloading of overriding, waardoor dezelfde methodenaam varieerde taken kan uitvoeren gebaseerd op parameters of context.
C# Polymorfisme Voorbeeld
We demonstreren methode-overloading binnen dezelfde class.
Stap 1 – De Basisklass Updaten
Wijzig Tutorial.cs zoals getoond:

Belangrijkste wijzigingen:
- De
SetTutorial-methode heeft nu twee overloads – één die eenintenstringaccepteert, en een andere die alleen eenstringaccepteert. - Beide overloads wijzen waarden toe aan de corresponderende velden.
Stap 2 – Testen in Program.cs
Vervang Program.cs met de volgende code:
using System;
namespace DemoApplication {
class Tutorial {
public int TutorialID;
public string TutorialName;
public void SetTutorial(int pID, string pName) {
TutorialID = pID;
TutorialName = pName;
}
public void SetTutorial(string pName) {
TutorialName = pName;
}
public string GetTutorial() {
return TutorialName;
}
static void Main(string[] args) {
Tutorial pTutor = new Tutorial();
pTutor.SetTutorial(1, "First Tutorial");
Console.WriteLine(pTutor.GetTutorial());
pTutor.SetTutorial("Second Tutorial");
Console.WriteLine(pTutor.GetTutorial());
Console.ReadKey();
}
}
}
Uitleg:
- Eerste aanroep geeft zowel
idalsnamedoor aan de twee-parameter overload. - Tweede aanroep geeft alleen
namedoor, wat de single-parameter overload aanroept.
De console toont:

Geavanceerde scenario's kun je een GetTutorialID-methode toevoegen om de ID apart op te halen.
Samenvatting
- Overerving laat een kindclass ouderleden overerven en uitbreiden.
- Polymorfisme, vooral methode-overloading, laat één methodenaam aanpassen aan verschillende parameter-sets.
- Beide concepten zijn essentieel voor schone, onderhoudbare en herbruikbare C#-code.
C Taal
- C# Expressies, Statements & Blokken: Uitgebreide Gids met Praktische Voorbeelden
- C# Classes & Objects: Fundamenten voor Robuuste OOP
- C# Abstract Classes & Methods: Een Praktische Gids
- C# Partial Classes en Methods: Een Praktische Gids
- C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
- C++ Functies Uitgelegd met Praktische Codevoorbeelden
- C++ Struct vs Class: Belangrijkste Verschillen, Syntaxis en Beste Gebruikssituaties
- While vs. Do-While lussen: Duidelijke vergelijking met praktische voorbeelden
- C# Programma Structuur: Kerncomponenten & Hello World Voorbeeld
- C# Erfelijkheid Beheersen: Herbruikbare, Onderhoudbare Code Bouwen
- type() en isinstance() in Python begrijpen: praktische voorbeelden