This article has been localized into German by the community.
Vererbung
Einer der absoluten Schlüsselaspekte der Objektorientierten Programmierung (Object Oriented Programming, OOP), dem Konzept, auf dem C# aufgebaut ist, ist die Vererbung, die Fähigkeit, Klassen zu erstellen, die bestimmte Aspekte von Elternklassen erben. Das gesamte .NET Framework baut auf diesem Konzept auf, mit dem "alles ist ein Objekt". Sogar eine einfache Zahl ist eine Instanz einer Klasse, die von der System.Object-Klasse erbt, obwohl .NET Ihnen ein wenig hilft, so dass Sie eine Nummer direkt zuweisen können, anstatt eine neue Instanz von z.B.: die Ganzzahlklasse.
Dieses Thema kann ein wenig schwierig zu verstehen sein, doch ein paar Beispiele können es etwas erleichtern, also lassen Sie uns mit einem einfachen beginnen:
public class Animal
{
public void Greet()
{
Console.WriteLine("Hello, I'm some sort of animal!");
}
}
public class Dog : Animal
{
}
Zuerst definieren wir eine Animal-Klasse mit einer einfachen Methode zur Ausgabe einer Begrüßung. Dann definieren wir eine Dog-Klasse, und mit einem Doppelpunkt teilen wir C# mit, dass die Dog-Klasse von der Animal-Klasse erben soll. Das schöne daran ist, dass es auch in der realen Welt Sinn macht - ein Hund ist offensichtlich ein Tier. Versuchen wir es mit den Klassen:
Animal animal = new Animal();
animal.Greet();
Dog dog = new Dog();
dog.Greet();
Wenn Sie dieses Beispiel ausführen, werden Sie bemerken, dass obwohl wir keine Greet() -Methode für die Dog-Klasse definiert haben, sie trotzdem weiß, wie sie uns begrüßt, weil sie diese Methode von der Animal-Klasse erbt. Allerdings ist diese Begrüßung ein wenig anonym, also lassen Sie uns sie anpassen, dass wir wissen, welches Tier es ist:
public class Animal
{
public virtual void Greet()
{
Console.WriteLine("Hello, I'm some sort of animal!");
}
}
public class Dog : Animal
{
public override void Greet()
{
Console.WriteLine("Hello, I'm a dog!");
}
}
Neben der für die Dog-Klasse hinzugefügten Methode sollten Sie zwei Dinge beachten: Ich habe das Schlüsselwort "virtual" der Methode in der Animal-Klasse hinzugefügt, und in der Dog-Klasse verwende ich das Schlüsselwort "override".
In C# dürfen Sie ein Mitglied einer Klasse nur dann überschreiben, wenn es als virtuell markiert ist. Wenn Sie möchten, können Sie immer noch auf die geerbte Methode zugreifen, auch wenn Sie sie überschreiben, indem Sie das Basisschlüsselwort verwenden.
public override void Greet()
{
base.Greet();
Console.WriteLine("Yes I am - a dog!");
}
Methoden sind jedoch nicht die einzigen Dinge, die vererbt werden. In der Tat werden so ziemlich alle Klassenmitglieder vererbt, einschließlich Felder und Eigenschaften. Erinnern Sie sich nur an die Regeln der Sichtbarkeit, wie in einem der vorherigen Kapitel beschrieben.
Vererbung ist nicht nur von einer Klasse zur anderen - Sie können eine ganze Hierarchie von Klassen haben, die von einander erben. Zum Beispiel könnten wir eine Puppy-Klasse erstellen, die von unserer Dog-Klasse erbt, die wiederum von der Animal-Klasse erbt. Was Sie in C# nicht tun können, ist eine Klasse von mehreren anderen Klassen gleichzeitig erben zu lassen. Mehrfachvererbung, wie sie genannt wird, wird von C# nicht unterstützt.