C# Vererbung & Polymorphie meistern: Praktische Code-Beispiele
Was ist Vererbung in C#?
Vererbung ist ein Eckpfeiler des objektorientierten Designs in C#. Sie ermöglicht einer Kindklasse, die Felder und Methoden einer Elternklasse automatisch zu erhalten, während die Kindklasse dieses Verhalten überschreiben oder erweitern darf. Dies fördert Code-Wiederverwendung, vereinfacht Wartung und etabliert eine klare Hierarchie.
- Definiert Eltern- und Kindklassen.
- Kind erbt Elternmember.
- Kind kann geerbtes Verhalten modifizieren.
- Kind kann eigene Member hinzufügen.
C# Vererbungsbeispiel
Nachfolgend eine schrittweise Demonstration, wie Vererbung implementiert und protected Member genutzt werden.
Schritt 1 – Basisklasse modifizieren
Öffnen Sie Tutorial.cs und ändern Sie die Tutorial-Klasse so, dass ihre Schlüsselfelder protected sind:

Die Verwendung von protected stellt sicher, dass nur abgeleitete Klassen direkt auf diese Felder zugreifen können.
Schritt 2 – Abgeleitete Klasse erstellen
Fügen Sie folgenden Code nach der Basisklassendefinition in Tutorial.cs ein:

Erklärung:
Guru99Tutorialals Kind vonTutorialmittels Doppelpunkt-Syntax (:) deklarieren.- Methode
RenameTutorialhinzufügen, dieTutorialNameeinen neuen Wert zuweist. - Da
TutorialNameprotected ist, kannGuru99Tutorialdarauf zugreifen, obwohl es nicht explizit dort deklariert ist.
Schritt 3 – Abgeleitete Klasse in Program.cs nutzen
Ersetzen Sie den Inhalt von Program.cs durch Folgendes:

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();
}
}
}
Erklärung:
- Das Programm instanziiert
Guru99Tutorial, nicht die BasisklasseTutorial. - Es ruft
RenameTutorialauf, um den Titel zu ändern. - Obwohl
GetTutorialin der Basisklasse definiert ist, kann die abgeleitete Instanz sie direkt aufrufen.
Die Codeausführung gibt aus:

Was ist Polymorphie in C#?
Polymorphie ermöglicht, dass ein einzelnes Interface unterschiedliche zugrundeliegende Formen repräsentiert. In C# manifestiert sich dies oft als Methodenüberladung oder -überschreibung, sodass derselbe Methodenname je nach Parametern oder Kontext unterschiedliche Aufgaben erfüllt.
C# Polymorphie-Beispiel
Wir demonstrieren Methodenüberladung innerhalb derselben Klasse.
Schritt 1 – Basisklasse aktualisieren
Modifizieren Sie Tutorial.cs wie gezeigt:

Wesentliche Änderungen:
- Die
SetTutorial-Methode hat nun zwei Überladungen – eine, dieintundstringakzeptiert, und eine, die nurstringakzeptiert. - Beide Überladungen weisen Werte den entsprechenden Feldern zu.
Schritt 2 – Test in Program.cs
Ersetzen Sie Program.cs durch folgenden 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();
}
}
}
Erklärung:
- Erster Aufruf übergibt sowohl
idals auchnamean die Zweiparameter-Überladung. - Zweiter Aufruf übergibt nur
name, ruft die Einparameter-Überladung auf.
Die Konsole zeigt:

Für fortgeschrittene Szenarien können Sie eine GetTutorialID-Methode hinzufügen, um die ID separat abzurufen.
Zusammenfassung
- Vererbung erlaubt einer Kindklasse, Elternmember zu erben und zu erweitern.
- Polymorphie, besonders Methodenüberladung, lässt einen einzelnen Methodennamen an unterschiedliche Parametersets anpassen.
- Beide Konzepte sind essenziell für sauberen, wartbaren und wiederverwendbaren C#-Code.
C Sprache
- C# Ausdrücke, Anweisungen & Blöcke: Umfassender Leitfaden mit Beispielen
- C# Klassen & Objekte: Fundamente für robustes OOP
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- C# Partielle Klassen und Methoden verstehen
- Versiegelte Klassen und Methoden in C# meistern
- C++-Funktionen erklärt: Mit praktischen Code-Beispielen
- C++ Struct vs. Class: Wichtige Unterschiede, Syntax und beste Anwendungsfälle
- While- vs. Do-While-Schleifen: Klare Gegenüberstellung mit praktischen Beispielen
- type() und isinstance() in Python verstehen: Praktische Beispiele
- C# Programmstruktur verstehen: Kernkomponenten & Beispiel