کلمه کلیدی sealed در کلاس ها و متد ها
پنجشنبه 2 مهر 1394واژهی sealed به معنای مهر و موم شده است و با استفاده از آن اطمینان مییابید که از یک کلاس مهر و موم شده نمیتوان ارثبری کرد. به منظور sealed کردن یک کلاس، کافی است که در ابتدای تعریف کلاس از کلمهی کلیدی sealed استفاده کنید.
واژهی sealed به معنای مهر و موم شده است و با استفاده از آن اطمینان مییابید که از یک کلاس مهر و موم شده نمیتوان ارثبری کرد. به منظور sealed کردن یک کلاس، کافی است که در ابتدای تعریف کلاس از کلمهی کلیدی sealed استفاده کنید. با استفاده از کلمهی کلیدی sealed به راحتی میتوانید مانع انجام شدن inheritance (ارث بری)شوید . برای مثال به کد زیر توجه کنید .
دو کلاس ClassA و ClassB ایجاد میکنیم که ClassB از ClassA ارث بری میکند .
public class ClassA { public void MethodA() { } } public class ClassB : ClassA { public virtual void Method1() { } }
کد بالا به درستی کار میکند و هنگام کامپایل خطا نمی دهد .
اکنون کلمه Sealed را قبل از ClassA قرار می دهیم و تغییرات را مشاهده میکنیم .
sealed public class ClassA { public void MethodA() { } } public class ClassB : ClassA { public virtual void Method1() { } }
هنگام اجرا کردن خطا زیر را مشاهده میکنید .
'ClassB': cannot derive from sealed type ‘ClassA'
استفاده از Sealed در متد ها
مانند کلاسها نمی توان در متدها از Sealed به طور مستقیم استفاده کرد . کلمه کلیدی Sealed در متد ها برای جلوگیری از Overriding بیشتر virtual method ها در طی ارث بری استفاده می شود .
به مثال زیر توجه کنید .
public class ClassA { public virtual void Method1() { } } public class ClassB : ClassA { public override void Method1() { } } public class ClassC : ClassB { public override void Method1() { } } public class ClassD : ClassC { public override void Method1() { } }
کد بالا به درستی کار میکند و هنگام کامپایل با خطا مواجه نمی شود .
حالا کلمه Sealed را هنگام overriding متد1 در کلاس C اضافه میکنیم .
public class ClassA { public virtual void Method1() { } } public class ClassB : ClassA { public override void Method1() { } } public class ClassC : ClassB { public sealed override void Method1() { } } public class ClassD : ClassC { public override void Method1() { } }
هنگام کامپایل کد ، خطای زیر مشاهده می شود .
'ConsoleApplication1.ClassD.Method1()': cannot override inherited member 'ConsoleApplication1.ClassC.Method1()' because it is sealed
مثال های بالا چگونگی کار کلمه کلیدی sealed با متد ها را نشان می دهند .
- C#.net
- 2k بازدید
- 1 تشکر