Tampaknya pedoman resmi Microsoft tentang penyegelan telah berevolusi sejak pertanyaan ini diajukan ~ 9 tahun yang lalu, dan mereka beralih dari filosofi keikutsertaan (segel secara default) ke menyisih (jangan segel secara default):
X JANGAN menutup kelas tanpa alasan yang kuat untuk melakukannya.
Menyegel kelas karena Anda tidak dapat memikirkan skenario ekstensibilitas bukanlah alasan yang baik. Pengguna framework suka mewarisi dari kelas karena berbagai alasan yang tidak jelas, seperti menambahkan anggota kenyamanan. Lihat Unsealed Classes untuk contoh alasan yang tidak diketahui pengguna ingin mewarisi dari suatu tipe.
Alasan yang baik untuk memeteraikan kelas mencakup yang berikut:
- Kelas tersebut adalah kelas statis. Lihat Desain Kelas Statis.
- Kelas menyimpan rahasia sensitif keamanan dalam anggota yang dilindungi yang diwariskan.
- Kelas mewarisi banyak anggota virtual dan biaya penyegelan mereka secara individual akan lebih besar daripada manfaat meninggalkan kelas tidak disegel.
- Kelas adalah atribut yang membutuhkan pencarian waktu proses yang sangat cepat. Atribut yang disegel memiliki tingkat kinerja yang sedikit lebih tinggi daripada yang tidak disegel. Lihat Atribut.
X JANGAN menyatakan dilindungi atau anggota virtual pada tipe tertutup.
Menurut definisi, tipe tersegel tidak dapat diwariskan. Ini berarti bahwa anggota yang dilindungi pada tipe tersegel tidak dapat dipanggil, dan metode virtual pada tipe tersegel tidak dapat diganti.
✓ PERTIMBANGKAN penyegelan anggota yang Anda timpa. Masalah yang dapat diakibatkan dari memperkenalkan anggota virtual (dibahas dalam Anggota Virtual) juga berlaku untuk penggantian, meskipun pada tingkat yang sedikit lebih rendah. Sealing sebuah override melindungi Anda dari masalah ini mulai dari titik tersebut dalam hierarki pewarisan.
Memang, jika Anda mencari basis kode ASP.Net Core , Anda hanya akan menemukan sekitar 30 kejadian sealed class, yang sebagian besar merupakan atribut dan kelas uji.
Menurut saya, konservasi keabadian adalah argumen yang baik untuk mendukung penyegelan.