Einführung in Vererbung in CSharp
In diesem Artikel erhältst du eine Einführung in die Vererbung in CSharp. Dabei handelt es sich um ein wichtiges Konzept der objekt orientierten Programmierung.
Dabei ist die Rede von Elternklassen/Superklasse und Kinderklassen/Subklassen. Hierzu ein kleines Beispiel
Die Superklasse Auto vererbt an die beiden Subklassen BMW und Audi. Diese beiden Subklassen haben nun Zugriff auf alle Funktionen und Variablen der Superklasse Auto die public sind. Die Superklasse Auto hat nun eine Funktion namens reparieren(). Diese Funktion soll einfach etwas in die Konsole schreiben, dann können wir diese Funktion durch Objekte vom Typen BMW und Audi verwenden.
Damit eine (Sub)Klasse von einer anderen (Super)Klasse erbt, muss man zum Klassennamen der Subklasse die Superklasse anfügen. Also quasi Audi : Auto
Beispiel für Vererbung in CSharp
class Programm
{
public static void Main(string[] args)
{
Audi A4 = new Audi();
BMW M5 = new BMW();
A4.reparieren();
M5.reparieren();
Console.ReadLine();
}
}
class Auto
{
public void reparieren()
{
Console.WriteLine("Das Auto wurde repariert!");
}
}
class Audi : Auto
{
}
class BMW : Auto
{
}
Obwohl die beiden Subklassen Audi und BMW keinen Inhalt haben, können wir dennoch Objekte von ihnen erstellen und die Funktion reparieren() verwenden. Das liegt daran, dass sie diese Funktion von der Auto Klasse geerbt haben. Wenn wir nun möchten, dass für den Fall, dass die Funktion reparieren() bei einem AudiObjekt aufgerufen wird, einen anderen Text ausgibt, müssen wir eine Funktion reparieren() in der Subklasse Audi anlegen die das tut. Und somit quasi die Ursprüngliche Funktion überschreiben.
class Audi : Auto
{
public void reparieren()
{
Console.WriteLine("Der Audi wurde repariert!");
}
}
Der Audi wurde repariert!
Vorteile der Vererbung
- Grundlage für Polymorphie – dazu mehr im Kapitel Polymorphie
- Wiederverwendbarkeit
- keine Quellcode-Duplizierung notwendig
- Fehlerkorrekturen bzw. Änderungen an einer Oberklasse wirken sich automatisch auch auf alle Unterklassen aus
- Weniger Schreibarbeit
- Leichtere Zusammenarbeit
Außerdem zu beachten!
Wenn wir der Funktion reparieren in einer der Subklassen einen Parameter hinzufügen würden(dieses Verfahren nennt sich “overloading”), würde es sich um eine komplett neue Methode Handeln und nicht um die gleiche Methode die wir in der Superklasse haben.