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

اگر به تازکی با کلاسهای انتزاعی(abstract) و واسطهای کاربری(interface) در جاوا آشنا شدهباشید در تفاوت بین این دو اندکی گیج میشوید در این مطلب تفاوتهای کلاسهای انتزاعی و واسطهای کاربری را عنوان میکنیم.
تفاوت اصلی این است که توابع در واسطهای کاربری جاوا به طور ضمنی abstract هستند و نمیتوانند پیادهسازی داشته باشند. در حالیکه یک کلاس abstract جاوا میتواند چند تابع نمونه داشته باشد که یک رفتار پیشفرض را پیادهسازی میکنند.
* متغیرهایی که در واسط کاربری جاوا تعریف شدهاند به طور پیشفرض final هستند. اما یک کلاس abstract در جاوا میتواند متغیرهای غیر final داشته باشد.
* اعضای واسط کاربری جاوا به طور پیش فرض public هستند. در حالیکه یک کلاس abstract جاوا میتواند تمام حالتهای ممکن برای اعضای کلاس را مانند private, protected و … داشته باشد.
* واسط کاربری جاوا با کلمه کلیدی implements پیادهسازی میشود در حالیکه کلاس abstract با استفاده از کلمه کلیدی extends ارثبری میشود.
* یک واسط کاربری تنها میتواند از واسطهای کاربری دیگر ارثبری کند در حالیکه یک کلاس abstract میتواند از یک کلاس جاوای دیگر و چندین واسط کاربری ارثبری کند.
* یک کلاس جاوا میتواند چندین واسط کاربری را پیادهسازی کند اما تنها از یک کلاس abstract میتواند ارث ببرد.
* واسط کاربری به طور کامل abstract است و نمیتواند از آن نمونه گرفته شود. کلاس abstract جاوا هم نمیتواند نمونهگیری شود اما در صورتی که متد main وجود داشته باشد میتواند فراخوانی شود.
منابع: