Закрытые (изолированные) классы и методы
С# позволяет объявлять классы и методы
как sealed (закрытые).
В случае класса это означает, что от
него нельзя ничего наследовать. В случае
метода это значит, что его нельзя
переопределить.
sealed class
my//закрытый класс
{
public sealed override void f();//закрытый
метод
}
classderived:my//ОШИБКА
Закрытые классы служат для обеспечения
внутренних действий программиста и
попытка переопределить функциональность
такого класса приведет к ошибкам.
Закрытыми классы объявляются также из
коммерческих соображений. Так например
string-закрытый класс. Но
это и ограничивает использованием таких
классов.
Смысл объявления закрытым метода
(защита авторских прав) – если метод
уже переопределен от базового класса
и разработчик не хочет, чтобы его
переопределяли дальше по иерархии.
Такие методы не должны быть
виртуальными, а “sealed”
говорит о том, что такое переопределение
этого метода является “финальным”.