Закрытие цепочки переопределения в C#
Иногда реализация в потомке должна остаться последней в цепочке наследования.
Слово sealed перед override запрещает
переопределение этого метода в классах ниже.
Запишем GetVersion в User
и закроем его в Employee:
class User {
public virtual int GetVersion() {
return 1;
}
}
class Employee : User {
public sealed override int GetVersion() {
return 2;
}
}
class Manager : Employee {
// public override int GetVersion() { return 3; } // ошибка
}
Номер версии на объекте сотрудника:
Employee employee = new Employee();
Console.WriteLine(employee.GetVersion());
Объявите в User метод
Build, закройте цепочку замены в Employee
и попробуйте переопределить его
в Manager - убедитесь,
что код не компилируется.