0

کلاس های انتزاعی و واسط ها بعد از جاوا ۸

با معرفی متد های concrete (متد های استاتیک و پیش فرض)  به واسط ها بعد از جاوا ۸ ، گفت و گو ها بین واسط ها و کلاس های انتزاعی به طور قابل ملاحظه ای کاهش یافته اند. در حال حاضر هردو میتوانند متد های concrete را به خوبی متد های انتزاعی داشته باشند. اما ، هنوز اختلاف اندکی بین آنها وجود دارد.
در این مقاله ما تلاش میکنیم که‌ تفاوت های بین واسط ها و کلاس های انتزاعی را بعد از جاوا ۸ را توضیح مختصری دهیم :

کلاس های انتزاعی و واسطها بعد از جاوا 8

۱- فیلد ها (متغیر ها):

متغیر های واسط ها به طور پیش فرض عمومی (public) ، استاتیک و ثابت هستند.در واسط ها هنوز هم متغیر ها غیر استاتیک و قابل تغییر نمیتوانند باشند‌. در صورتی که در کلاس های انتزاعی متغیر ها میتوانند استاتیک یا غیر استاتیک و ثابت یا قابل تغییر باشند آنها همچنان میتوانند سطح دسترسی های مختلفی هم داشته باشند.

۲- متدها:

بعد از جاوا ۸ یک واسط به طور پیشفرض میتواند متد های استاتیک را همراه با متدهای انتزاعی داشته باشد. واسط ها نمیتواند متدهای ثابت را داشته باشند. اما کلاس های انتزاعی میتوانند متد های ثابت و قابل تغییر و استاتیک و غیر استاتیک را همراه با متد های انتزاعی داشته باشند.

۳-سازنده:

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

۴-دسترسی کاربران:

همه ی کاربران میتوانند به واسط ها دسترسی داشته باشند. سطح دسترسیه اجزای هر واسط نمیتواند خصوصی(private) و محافظت شده(protected) باشد. اما کلاس های انتزاعی از تمام سطوح دسترسی پشتیبانی میکنند.

 

۵-وراسط چندگانه:

یک کلاس تنها میتواند از یک کلاس انتزاعی ارث بری کند اما میتواند از چندین واسط ارث بری کند بنابر این یک کلاس میتواند با استفاده از این خاصیت از منابع مختلف تنها از طریق واسط ارث بری کند نه از طریق کلاس های انتزاعی.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *