2.7 KiB
Heredity
Die Vererbung ist wohl das mächtigste Tool für C#.
Es bedeutet, dass man von Mutter klassen zu Tochter klassen alle Eigenschaften weitergeben kann.
In meinem Beispiel, werde ich dass aufzeigen anhand eines Zoo's mit Tieren und den Kategorien welche es da gibt.
Mutter Klasse
Wir haben ein Tier, dieses kann ein Geräusch machen mit der Methode MakeNoise()
.
Wenn ich nun ein Säugetier erstellen will, macht dieses ja ein anderes Geräusch als ein Vogel.
Wichtig ist: Bei einer Mutter klasse schreiben wir immer da das Keyword virtual
hin, wo wir die Möglichkeit haben wollen, in der Tochter klasse dies zu bearbeiten oder ganz zu verändern.
namespace Zoo.Animals
{
public abstract class Animal
{
public virtual string name { get; set; } = "animal";
public virtual string foodType { get; } = "Animalfood";
public virtual string habitat { get; } = "Cage";
public virtual void MakeNoise()
{
Debug.Write($"{this.name} makes a Noise: ");
}
}
}
Wir lassen jetzt das Säugetier von Animal erben.
Dies geht, indem wir nach dem Klassennamen die zu erbende Klasse nach einem : einfügen. Hier mit: Mammal : Animal
namespace Zoo.Animals
{
public abstract class Mammal : Animal
{
}
}
Nun können wir einige der Properties und Methoden verändern bzw. überschreiben.
Wir ändern foodType
& habitat
so wie die Methode MakeNoise()
.
Mit dem Keyword override
.
namespace Zoo.Animals
{
public abstract class Mammal : Animal
{
public override string foodType => "Mammalfood";
public override string habitat => "Cage";
public override void MakeNoise()
{
Debug.WriteLine($"{this.name} makes a Noise: Mammal Noise");
}
}
}
Wenn wir uns den Code der Methode MakeNoise()
von Animal anschauen sehen wir, dass wir ein Debug.Write
verwenden dies könnten wir weiterverwenden, mit this.base()
namespace Zoo.Animals
{
public abstract class Mammal : Animal
{
public override string foodType => "Mammalfood";
public override string habitat => "Cage";
public override void MakeNoise()
{
this.MakeNoise();
Debug.WriteLine("Mammal Noise");
}
}
}
Mit diesem Code wird erst die Methode MakeNoise()
von Animal aufgerufen. Was dazu führt, dass in die Konsole {this.name} makes a Noise:
geschriben wird.
Im nächsten Schritt wird mit Debug.WriteLine("Mamal Noise")
Mamal Noise auf der gleichen Zeile ausgegeben und eine neue Zeile begonnen.
Die Ausgabe wird {this.name} makes a Noise: Mamal Noise
sein.
Es sind 2 Wege zum gleichen Ziel.