Пометка класса как Sealedпредотвращает вмешательство в важные классы, которые могут поставить под угрозу безопасность или повлиять на производительность.
Во многих случаях изоляция класса также имеет смысл при разработке служебного класса с фиксированным поведением, которое мы не хотим изменять.
Например, Systemпространство имен в C#предоставляет множество запечатанных классов, таких как String. Если он не запечатан, его функциональность можно было бы расширить, что может быть нежелательно, поскольку это фундаментальный тип с заданной функциональностью.
Точно так же structuresin C#всегда неявно запечатаны. Следовательно, нельзя вывести одну структуру / класс из другой структуры. Причина этого в том, что structuresони используются для моделирования только автономных, атомарных, определяемых пользователем типов данных, которые мы не хотим изменять.
Иногда, когда вы строите иерархию классов, вам может потребоваться ограничить определенную ветвь в цепочке наследования на основе модели предметной области или бизнес-правил.
Например, a Managerи PartTimeEmployeeоба Employees, но у вас нет никакой роли после сотрудников, работающих неполный рабочий день, в вашей организации. В этом случае вы можете захотеть запечатать, PartTimeEmployeeчтобы предотвратить дальнейшее разветвление. С другой стороны, если у вас есть почасовые или еженедельные сотрудники, работающие неполный рабочий день, может иметь смысл унаследовать их от PartTimeEmployee.