دانستنی‌ها

تفاوت واسط کاربری و کلاس انتزاعی در جاوا

اگر به تازکی با کلاس‌های انتزاعی(abstract) و واسط‌های کاربری(interface) در جاوا آشنا شده‌باشید در تفاوت بین این دو اندکی گیج می‌شوید در این مطلب تفاوت‌های کلاس‌های انتزاعی و واسط‌های کاربری را عنوان می‌کنیم.

 

تفاوت اصلی این است که توابع در واسط‌های کاربری جاوا به طور ضمنی abstract هستند و نمی‌توانند پیاده‌سازی داشته باشند. در حالیکه یک کلاس abstract جاوا می‌تواند چند تابع نمونه داشته باشد که یک رفتار پیش‌فرض را پیاده‌سازی می‌کنند.

* متغیرهایی که در واسط کاربری جاوا تعریف شده‌اند به طور پیش‌فرض final هستند. اما یک کلاس abstract در جاوا می‌تواند متغیرهای غیر final داشته باشد.

* اعضای واسط کاربری جاوا به طور پیش فرض public هستند. در حالیکه یک کلاس abstract جاوا می‌تواند تمام حالت‌های ممکن برای اعضای کلاس را مانند private, protected و … داشته باشد.

* واسط کاربری جاوا با کلمه کلیدی implements پیاده‌سازی می‌شود در حالیکه کلاس abstract با استفاده از کلمه کلیدی extends ارث‌بری می‌شود.

* یک واسط کاربری تنها می‌تواند از واسط‌های کاربری دیگر ارث‌بری کند در حالیکه یک کلاس abstract می‌تواند از یک کلاس جاوای دیگر و چندین واسط کاربری ارث‌بری کند.

* یک کلاس جاوا می‌تواند چندین واسط کاربری را پیاده‌سازی کند اما تنها از یک کلاس abstract می‌تواند ارث ببرد.

* واسط کاربری به طور کامل abstract است و نمی‌تواند از آن نمونه گرفته شود. کلاس abstract جاوا هم نمی‌تواند نمونه‌گیری شود اما در صورتی که متد main وجود داشته باشد می‌تواند فراخوانی شود.

منابع:

http://javapapers.com/

http://stackoverflow.com/

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا