Marcar uma classe como Sealedimpede 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 Systemnamespace 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, structuresin C#são sempre selados implicitamente. Portanto, não se pode derivar uma estrutura / classe de outra estrutura. O motivo para isso é que structuressã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 Managere PartTimeEmployeesã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 PartTimeEmployeepara evitar mais ramificações. Por outro lado, se você tiver funcionários horistas ou semanais em tempo parcial, pode fazer sentido herdá-los PartTimeEmployee.