HOWTO · Csharp
Überschreiben von Eigenschaften in Unterklassen in C#
In diesem Artikel erfahren Sie, wie Sie mit C# Felder oder Eigenschaften in Unterklassen überschreiben.
Auf dieser Seite
In diesem Artikel erfahren Sie, wie Sie mit C# Felder oder Eigenschaften in Unterklassen überschreiben. Lassen Sie uns einen Überblick über das Überschreiben in C# geben.
Übersicht zum Überschreiben in C#
Durch das Überschreiben kann eine untergeordnete Klasse eine bereits vorhandene Methode in der übergeordneten Klasse implementieren. Diese Fähigkeit stand bisher nur der übergeordneten Klasse zur Verfügung.
Da die Unterklasse eine Methode mit ähnlichem Namen wie die in der Basisklasse enthält, wird die Implementierung in der Unterklasse gegenüber der in der Basisklasse priorisiert.
Angenommen, wir haben eine abstrakte Basisklasse und möchten ein Feld oder eine Eigenschaft mit einem eindeutigen Wert in jeder Klasse definieren, die von dieser übergeordneten Klasse geerbt wird. Und wir wollen es in der Basisklasse angeben, damit wir in einer Methode, die zur Basisklasse gehört, darauf verweisen können.
Verwenden Sie die Eigenschaft abstract, um Eigenschaften in Unterklassen in C# zu überschreiben
Die Verwendung einer abstrakten Eigenschaft, die dann von geerbten Klassen überschrieben werden kann, ist der optimale Ansatz für die obige Situation. Dies hat mehrere Vorteile, darunter, dass es erzwungen wird, sauber ist und überschrieben werden kann.
abstract class Tree {
abstract public int MyLeaf { get; set; }
}
Aber es scheint ein wenig seltsam, einen fest codierten Wert zurückzugeben, anstatt ein Feld zu kapseln, und dazu sind ein paar Codezeilen mehr erforderlich als nur eine. Wir müssen einen Körper für die set-Operation deklarieren, aber das ist von geringer Bedeutung, und es gibt wahrscheinlich eine Technik, um dies zu umgehen, mit der wir nicht vertraut sind.
class Root : Tree {
public override int MyLeaf {
get { return 1; }
set {}
}
}
Vollständiger Beispielcode:
abstract class Tree {
abstract public int MyLeaf { get; set; }
}
class Root : Tree {
public override int MyLeaf {
get { return 1; }
set {}
}
}