C# dasturlash tilida Sealed class tushunchasi mavjud.
Sealed class deb o'zidan voris (inheritance) qoldirmaydigan classlarga aytiladi. Sealed class yaratish uchun C# dasturlash tilida class yozuvidan oldin sealed kalit so'zini yozish lozim. Sealed kalit so'zi kompilyator uchun bu classdan voris olib bo'lmasligini bildiradi.
Agar kod ishga tushirilsa natija quyidagicha bo'ladi:
💡 error CS0509: 'Class_nomi2': cannot derive from sealed type 'Class_nomi1'
Methodlar ham sealed bo'lishi mumkin, lekin sealed qilingan methodning classi, biror-bir classning vorisi bo'lishi lozim. Methodni sealed qilinishidan asosiy maqsad: voris classdagi methodni override qilishdan himoya qilish.
(Override yoki shu kabi tamoyillar haqida bilmasangiz, oldingi maqolalarni ko'rishingiz mumkin.)
Tushunishga qiyin bo'lishi mumkin, ammo quyidagi kodda tushunish osonroq:
namespaceSealed_Class{internalclassProgram {staticvoidMain(string[] args) { //.... }publicclassAsosiy { // voris bo'ladigan methodpublicvirtualintAdd(int a,int b) {return a + b; } } //asosiy classdan voris olishpublicclassVoris1:Asosiy { //voris bo'lgan methodni sealed qilishpublicsealedoverrideintAdd(int a,int b) {return a + b; } } }}
Yuqoridagi kodda voris bo'lgan method polymorphism yordamida sealed qilindi, yani Voris1 classidagi Add methodini boshqa classda voris olib bo'lmasligi ta'minlandi.
Quyidagi kodda, esa yuqoridagi kodning sealed qilingan methodidan voris olishga harakat qilingan:
namespaceSealed_Class{internalclassProgram { staticvoidMain(string[] args) { //.... }publicclassAsosiy { // voris bo'ladigan methodpublicvirtualintAdd(int a,int b) {return a + b; } } //asosiy classdan voris olishpublicclassVoris1:Asosiy { //voris bo'lgan methodni sealed qilishpublicsealedoverrideintAdd(int a,int b) {return a + b; } }publicclassVoris2:Voris1 { //sealed bo'lgan methoddan voris olishga urinishpublicoverrideintAdd(int a,int b) {return a + b; } } }}
Natija quydagicha bo'ladi:
💡 error CS0239: 'Program.Voris2.Add(int, int)': cannot override inherited member 'Program.Voris1.Add(int, int)' because it is sealed.