Contrassegnare una classe come Sealed
impedisce la manomissione di classi importanti che possono compromettere la sicurezza o influire sulle prestazioni.
Molte volte, sigillare una classe ha senso anche quando si progetta una classe di utilità con un comportamento fisso, che non vogliamo cambiare.
Ad esempio, lo System
spazio dei nomi in C#
fornisce molte classi che sono sigillate, come String
. Se non sigillato, sarebbe possibile estenderne le funzionalità, il che potrebbe essere indesiderabile, in quanto è un tipo fondamentale con una determinata funzionalità.
Allo stesso modo, structures
in C#
sono sempre implicitamente sigillati. Quindi non si può derivare una struttura / classe da un'altra struttura. Il motivo è che structures
vengono utilizzati per modellare solo tipi di dati autonomi, atomici e definiti dall'utente , che non si desidera modificare.
A volte, quando crei gerarchie di classi, potresti voler limitare un determinato ramo nella catena di ereditarietà, in base al tuo modello di dominio o alle regole aziendali.
Ad esempio, un Manager
e PartTimeEmployee
sono entrambi Employee
, ma non hai alcun ruolo dopo i dipendenti part-time nella tua organizzazione. In questo caso, potresti voler sigillare PartTimeEmployee
per evitare ulteriori ramificazioni. D'altra parte, se hai dipendenti part-time orari o settimanali, potrebbe avere senso ereditarli da PartTimeEmployee
.