انتزاعی سازی با interface
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
انتزاعی سازی با interface
در پست آموزش انتزاعی سازی با abstract، با مفهوم انتزاعی سازی از طریق کلاسها آشنا شدید.
به زبان ساده انتزاعی سازی یعنی اجبار والد به تمامی فرزندهای خود، در رابطه با دوباره نویسی یک عضو خاص!
اگر کلاس والد از جنس abstract باشد، هر عضوی که داخل این کلاس والد بصورت abstract تعریف شود، یعنی اون عضو انتزاعی شده تا تمامی فرزندها بالاجبار یک نسخه شبیه به آن را برای خود تعریف و دوباره نویسی کنند.
درنتیجه میشه گفت که میزان انتزاعی سازی در کلاسها با استفاده از کلمه کلیدی abstract دست خودمان میباشد، یعنی میتوانیم بعضی عضوها را از نوع abstract و بعضی عضوها را بصورت ساده تعریف کنیم.
اما در interface ها اینطور نیست!
وقتی یک interface تعریف و آن را والد چند کلاس قرار میدهیم، هر عضوی که داخل آن interface نوشته شود، انتزاعی بوده و تمامی فرزندان بالاجبار باید تمامی آن عضوها را برای خود دوباره نویسی کنند.
پس میزان انتزاعی سازی عضوهای interface بصورت صد در صدی است.
برای ایجاد یک interface باید دقیقا مثل تعریف کلاس به منوی سولوشن اکسپلورر مراجعه کرده و از زیر منوی Add گزینه new item را انتخاب کنیم:
در این مرحله برخلاف قبل، به جای class، گزینه interface را انتخاب کرده و یک نام دلخواه برای آن درج میکنیم:
یادتان باشد که interface ها خیلی شبیه به کلاس هستند، اما کلاس نیستند!
در نتیجه نمیتوان یک شئ یا نمونه از آنها تعریف کرد و در اینصورت قطعا چیزی به نام متد سازنده ندارند!
همچنین با وجود اینکه میتوانیم درون یک interface پراپرتی یا متغیر تعریف کنیم، اما از interface ها بیشتر برای متدها استفاده میشود.
فراموش نکنید که interface ها ذاتا به جهت والد بودن ساخته شده و چون عضوهای آنان انتزاعی بوده، پس بایستی بدون بدنه (بدون بلاک کد) تعریف شوند.
به علاوه که هر کلاس تنها میتواند فرزند یک کلاس والد باشد، درحالی که یک کلاس میتواند فرزند چندین interface نیز باشد.
برای والد قرار دادن یک interface باید دقیقا مثل مبحث وراثت در کلاسها، جلوی اسم کلاس فرزند یک کاراکتر دو نقطه درج کرده و نام interface والد را جلوی آن بنویسیم:
class child :interfaceجهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.