Oznaczenie klasy jako Sealedzapobiega manipulowaniu ważnymi klasami, które mogą zagrozić bezpieczeństwu lub wpłynąć na wydajność.
Często zapieczętowanie klasy ma również sens, gdy projektujemy klasę użytkową o stałym zachowaniu, którego nie chcemy zmieniać.
Na przykład Systemprzestrzeń nazw w C#zawiera wiele klas, które są zapieczętowane, takie jak String. Gdyby nie był zamknięty, możliwe byłoby rozszerzenie jego funkcjonalności, co mogłoby być niepożądane, ponieważ jest to typ podstawowy o danej funkcjonalności.
Podobnie, structuresw C#są zawsze domyślnie zapieczętowane. Dlatego nie można wyprowadzić jednej struktury / klasy z innej struktury. Powodem tego jest to, że structuressą one używane do modelowania tylko samodzielnych, niepodzielnych, zdefiniowanych przez użytkownika typów danych, których nie chcemy modyfikować.
Czasami podczas budowania hierarchii klas możesz chcieć ograniczyć określoną gałąź w łańcuchu dziedziczenia na podstawie modelu domeny lub reguł biznesowych.
Na przykład, a Manageri PartTimeEmployeesą oba Employee, ale nie pełnisz żadnej roli po pracownikach zatrudnionych w niepełnym wymiarze godzin w Twojej organizacji. W takim przypadku możesz chcieć zapieczętować, PartTimeEmployeeaby zapobiec dalszemu rozgałęzianiu. Z drugiej strony, jeśli masz pracowników zatrudnionych w niepełnym wymiarze godzinowym lub tygodniowym, warto odziedziczyć ich po PartTimeEmployee.