Ist es möglich, überschriebene Methode als endgültig zu markieren?
In C# ist es möglich, dass mark eine überschriebene virtuelle Methode als final, damit der Entwickler nicht außer Kraft setzen kann? Wie sollte ich das tun?
Sich an einem Beispiel leichter zu verstehen:
class A
{
abstract void DoAction();
}
class B : A
{
override void DoAction()
{
//Implements action in a way that it doesn't make
//sense for children to override, e.g. by setting private state
//later operations depend on
}
}
class C: B
{
//This would be a bug
override void DoAction() { }
}
Gibt es eine Möglichkeit zu ändern, B) um zu verhindern, dass andere Kinder C überschreiben DoAction, entweder zur Compilezeit oder Laufzeit?
InformationsquelleAutor der Frage dbkk | 2009-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, mit "versiegelt":
InformationsquelleAutor der Antwort Lucero
Können Sie markieren die Methode als
sealed
.http://msdn.microsoft.com/en-us/library/aa645769(VS.71).aspx
InformationsquelleAutor der Antwort Ryan Emerle
Müssen Sie "versiegelt".
InformationsquelleAutor der Antwort RichieHindle
Einzelnen Methoden können als solche gekennzeichnet werden versiegelt, welches im großen und ganzen entspricht die Kennzeichnung einer Methode als final in java. Also in deinem Beispiel müssten Sie:
InformationsquelleAutor der Antwort serg10