فرق abstract class با interface

چهارشنبه 17 دی 1393

این مقاله تفاوتهای بین interface و abstract class را شرح می دهد.

مقدمه:

ارث بری ازچند کلاس به طور هم زمان امکان پذیر نیست ولی interface این قابلیت را داراست.

یک کلاس abstract شبیه interface می باشد ولی با دیدی وسیع تر , این کلاس ها می تواند دارای متدهای abstarct باشد که شبیه interface فقط اعلام می شوند .باید در کلاس های مشتق شده باز نویسی (override)شوند والبته می توان در این کلاس متدهای داشت که abstarct نیستند .

تفاوت بین interface وabstract class

1-یک کلاس معمولی می تواند ازیک کلاس  abstarct ارث بری کند ولی همان کلاس می تواند از چندین interface ارث ببرد.

2-یک interface  فقط می تواند اعلان متدها و خصوصیات ها را داشته باشد اما یک کلاس abstract علاوه بر آن می تواند متدها و خصوصیتهایی با کد های کامل داشته باشد.

3-عناصر موجود در کلاس abstarct می توانند مانند یک کلاس معمولی دارای سطح دسترسی باشند ولی interface این قابلیت را ندارد.

4-وقتی متدی را به کلاس abstract اضافه می کنید اگر این متد abstract نباشد به طور خودکار به همه ی زیر کلاس ها اعمال می شود اما در interface  اگر متدی اضافه کنید باید در تمام زیرکلاس ها آن را اعمال کنید.

5-کلاس abstract مانند کلاس های معمولی می توانند دارای فیلد و عناصر دیگری باشند در حالی interface فاقد این امکان است.

نتیجه گیری کلی

abstract  از نوع کلاس است ولی interface کلاس نیست.

مواقعی که نیاز به وراثت چندگانه داریم باید از interface استفاده کنیم .

وقتی در پروژه های کلان با تغییرات بسیاری روبرو می شویم استفاده از کلاس abstract  توصیه می شود چون با تغییر آن به صورت اتومات تغییرات در کلاس های مشتق شده اعمال می شود.

به طور کلی interface ها چارچوب و قابلیتهای کلاس را مشخص می کند و یک قرارداد است ولی کلاس abstract نوع کلاس را معین می کند.

shokaran

نویسنده 1 مقاله در برنامه نویسان
  • C#.net
  • 8k بازدید
  • 6 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید