Menandai kelas sebagai Sealed
mencegah perusakan kelas penting yang dapat membahayakan keamanan, atau memengaruhi kinerja.
Seringkali, menyegel kelas juga masuk akal ketika seseorang mendesain kelas utilitas dengan perilaku tetap, yang tidak ingin kita ubah.
Misalnya, System
namespace di C#
menyediakan banyak kelas yang disegel, seperti String
. Jika tidak disegel, dimungkinkan untuk memperluas fungsinya, yang mungkin tidak diinginkan, karena ini adalah tipe dasar dengan fungsionalitas tertentu.
Demikian pula, structures
in C#
selalu tersegel secara implisit. Karenanya seseorang tidak dapat memperoleh satu struktur / kelas dari struktur lain. Alasan untuk ini adalah yang structures
digunakan untuk memodelkan hanya tipe data yang berdiri sendiri, atom, dan ditentukan pengguna , yang tidak ingin kita modifikasi.
Terkadang, saat Anda membangun hierarki kelas, Anda mungkin ingin menutup cabang tertentu dalam rantai warisan, berdasarkan model domain atau aturan bisnis Anda.
Misalnya, a Manager
dan PartTimeEmployee
keduanya Employee
s, tetapi Anda tidak memiliki peran apa pun setelah karyawan paruh waktu di organisasi Anda. Dalam kasus ini, Anda mungkin ingin menyegel PartTimeEmployee
untuk mencegah percabangan lebih lanjut. Di sisi lain, jika Anda memiliki karyawan paruh waktu per jam atau mingguan, mungkin masuk akal untuk mewarisi mereka PartTimeEmployee
.