Sealed
Niyozbek Mirzayev
C# dasturlash tilida Sealed class tushunchasi mavjud.
Sealed classga misol:
sealed class class_nomi
{
// xususiylatlar
// methodlar
}
Quyidagi kodda sealed classdan voris olishga harakat qilingan:
namespace Sealed_Class
{
internal class Program
{
static void Main(string[] args)
{
//....
}
// sealed classni yaratish
public sealed class Class_nomi1
{
//....
}
//seled klassdan voris olishga harakat qilish
public class Class_nomi2 : Class_nomi1
{
//...
}
}
}
Agar kod ishga tushirilsa natija quyidagicha bo'ladi:
💡 error CS0509: 'Class_nomi2': cannot derive from sealed type 'Class_nomi1'
(Override yoki shu kabi tamoyillar haqida bilmasangiz, oldingi maqolalarni ko'rishingiz mumkin.)
Tushunishga qiyin bo'lishi mumkin, ammo quyidagi kodda tushunish osonroq:
namespace Sealed_Class
{
internal class Program
{
static void Main(string[] args)
{
//....
}
public class Asosiy
{
// voris bo'ladigan method
public virtual int Add(int a, int b)
{
return a + b;
}
}
//asosiy classdan voris olish
public class Voris1 : Asosiy
{
//voris bo'lgan methodni sealed qilish
public sealed override int Add(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:
namespace Sealed_Class
{
internal class Program
{
static void Main(string[] args)
{
//....
}
public class Asosiy
{
// voris bo'ladigan method
public virtual int Add(int a, int b)
{
return a + b;
}
}
//asosiy classdan voris olish
public class Voris1 : Asosiy
{
//voris bo'lgan methodni sealed qilish
public sealed override int Add(int a, int b)
{
return a + b;
}
}
public class Voris2 : Voris1
{
//sealed bo'lgan methoddan voris olishga urinish
public override int Add(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.
Last updated
Was this helpful?