Marquer une classe comme Sealed
empêche la falsification de classes importantes qui peuvent compromettre la sécurité ou affecter les performances.
Plusieurs fois, sceller une classe a également du sens lorsque l'on conçoit une classe utilitaire avec un comportement fixe, que nous ne voulons pas changer.
Par exemple, l' System
espace de noms dans C#
fournit de nombreuses classes qui sont scellées, telles que String
. S'il n'est pas scellé, il serait possible d'étendre ses fonctionnalités, ce qui pourrait être indésirable, car il s'agit d'un type fondamental avec une fonctionnalité donnée.
De même, structures
in C#
sont toujours implicitement scellés. Par conséquent, on ne peut pas dériver une structure / classe d'une autre structure. Le raisonnement en est qu'ils structures
sont utilisés pour modéliser uniquement des types de données autonomes, atomiques, définis par l' utilisateur, que nous ne voulons pas modifier.
Parfois, lorsque vous créez des hiérarchies de classes, vous souhaiterez peut-être limiter une certaine branche de la chaîne d'héritage, en fonction de votre modèle de domaine ou de vos règles métier.
Par exemple, a Manager
et PartTimeEmployee
sont tous deux des Employee
s, mais vous n'avez aucun rôle après les employés à temps partiel de votre organisation. Dans ce cas, vous souhaiterez peut-être sceller PartTimeEmployee
pour éviter toute nouvelle ramification. D'un autre côté, si vous avez des employés à temps partiel à l'heure ou à la semaine, il peut être judicieux d'en hériter PartTimeEmployee
.