ITSI.IR – در این مقاله می خواهیم درباره یکی از ویژگی های بسیار پرکاربرد شی گرای سی شارپ یعنی کلاس Sealed بحث کنیم. توضیحات کامل به همراه کد های مربوطه برایتان در ادامه ی مطلب قرار داده شده است. با ITSI.IR همراه باشید .

کلاس Sealed

نوعی کلاس است که نمی توان از آن ارث بری کرد. در زیر به برخی از نکات مربوط به آن اشاره شده است:

این کلاس با کلمه کلیدی Sealed ایجاد می شود.

نمی توان بر روی این کلاس ها access modifier (مجوزهای دسترسی) اعمال کرد.

برای دسترسی به اعضای کلاس Sealed باید شی ای از جنس این کلاس ایجاد کنیم.

برای جلوگیری از ارث بری کردن از یک کلاس، از کلمه کلیدی Sealed برای آن استفاده می کنیم.

مثال:

در مثال بالا، کلاس ما با کلمه کلیدی Sealed تعریف شده است از این رو نمی توان از این کلاس و اعضای آن ارث بری کرد، به عبارت دیگر نمی توان از کلاس Sealed کلاسی مشتق کرد.

این نوع از کلاس ها زمانی که می خواهیم وراثت از کلاس را محدود کنیم بسیار مهم هستند که بالاترین سطح از امنیت را برای کد فراهم می کنند. حالا اجازه دهید که مثالی از کلاس Sealed را باهم مشاهده کنیم که به صورت console application ایجاد شده است.

ویژوال استودیو را از منوی استارت باز می کنیم.

از منوی File گزینه New و سپس Project را انتخاب کرده و از قسمت Visual C# گزینه Windows و سپس Console application را انتخاب می کنیم.

پس از آن نام مناسبی مانند “abstract class” یا هر نام دیگری انتخاب کرده و محل ذخیره سازی پروژه را مشخص می کنیم و روی دکمه Ok کلیک می کنیم.

حال فایل کلاس را باز کرده و برنامه ساده زیر را در آن ایجاد می کنیم.

در برنامه بالا، CustoMerDetails یک کلاس Sealed شامل یک متد به نام ()AccountIno می باشد که قابل وراثت نیست، بنابراین برای دسترسی به اعضای یک کلاس Sealed باید در متد main کلاس program شی ای از جنس آن کلاس ایجاد کنیم.

حال، ممکن است فکر کنید چه تفاوتی بین Sealed و private وجود دارد چرا که هر دو این کلاس ها قابل ارث بری نیستند، در زیر به تفاوت های این دو اشاره شده است:

کلاس های Private نمی توانند به طور مستقیم در فضای نام تعریف شوند، اما کلاس های Sealed می توانند درون فضای نام تعریف شوند.

ما نمی توانیم شی ای از کلاس private بسازیم اما می توانیم شی ای از جنس کلاس Sealed داشته باشیم.

اعضای کلاس private تنها درون کلاس قابل دسترسی هستند، اما اعضای کلاس Sealed از طریق شی در بیرون کلاس نیز قابل دسترسی می باشند.