|
ООП С Sharp - Запечатанные классы и методы
Во многих отношениях можно думать о классах и методах sealed (запечатанный), как о противоположности абстрактным классам и методам. В то время как объявление чего-либо абстрактным означает, что это что-то должно быть переопределено или унаследовано, sealed означает как раз наоборот — что наследование и переопределение запрещено. Не все объектно-ориентированные языки поддерживают эту концепцию, но иногда это может оказаться удобным. В синтаксисе C# это выглядит следующим образом:
sealed class FinalClass
{
...
C# также поддерживает объявление индивидуальных переопределенных методов как sealed, что предотвращает их дальнейшее переопределение. Наиболее вероятна ситуация, когда вы будете помечать класс или метод как sealed — это когда нужно реализовать некоторую внутреннюю операцию библиотеки, класса или классов, которые вы разрабатываете, и вы абсолютно уверены, что любая попытка переопределения их функциональности приведет к проблемам. Вы можете также пометить класс или метод как sealed из коммерческих соображений, дабы предотвратить расширение ваших классов сторонними разработчиками, которое противоречит лицензионным соглашениям. Вообще говоря, однако, следует быть осторожным с объявлением класса или метода как sealed, потому то это существенно ограничивает их использование. Даже если вы не думаете, что будет полезным наследовать от класса или переопределять некоторый его член, все же вероятно, что в определенный момент в будущем некто столкнется с ситуацией, которую вы не могли предвидеть, когда такое наследование понадобится.
|