Marcar uma classe como Sealed
impede a violação de classes importantes que podem comprometer a segurança ou afetar o desempenho.
Muitas vezes, selar uma classe também faz sentido quando se está projetando uma classe de utilitário com comportamento fixo, que não queremos alterar.
Por exemplo, o System
namespace em C#
fornece muitas classes que são lacradas, como String
. Se não fosse lacrado, seria possível estender sua funcionalidade, o que pode ser indesejável, pois é um tipo fundamental com determinada funcionalidade.
Da mesma forma, structures
in C#
são sempre selados implicitamente. Portanto, não se pode derivar uma estrutura / classe de outra estrutura. O motivo para isso é que structures
são usados para modelar apenas tipos de dados autônomos, atômicos e definidos pelo usuário , que não queremos modificar.
Às vezes, quando você está construindo hierarquias de classes, você pode querer limitar um determinado ramo na cadeia de herança, com base em seu modelo de domínio ou regras de negócios.
Por exemplo, a Manager
e PartTimeEmployee
são ambos Employee
, mas você não tem nenhuma função depois de funcionários de meio período em sua organização. Nesse caso, você pode querer selar PartTimeEmployee
para evitar mais ramificações. Por outro lado, se você tiver funcionários horistas ou semanais em tempo parcial, pode fazer sentido herdá-los PartTimeEmployee
.