تفاوت بین abstract class و interface در Java چیست؟

خلاصه
1402/11/13

در زبان برنامه‌نویسی Java، abstract class و interface دو مفهوم متفاوت هستند، اما هر دو به صورت تعریف یک نوع کننده (type) برای کلاس‌ها به کار می‌روند.

تفاوت بین abstract class و interface در Java چیست؟

تفاوت بین abstract class و interface در Java چیست؟ در زبان برنامه‌نویسی Java، abstract class و interface دو مفهوم متفاوت هستند، اما هر دو به صورت تعریف یک نوع کننده (type) برای کلاس‌ها به کار می‌روند. در ادامه، تفاوت‌های اصلی بین abstract class و interface را بررسی می‌کنیم: تعداد ارث‌بری: یک کلاس می‌تواند از یک abstract class فقط یکبار ارث‌بری کند، در حالی که از چندین interface می‌تواند ارث‌بری شود. این قابلیت از "multiple inheritance" یا "چند ارث‌بری" شناخته می‌شود.
محتوا: یک abstract class می‌تواند شامل فیلدها (متغیرها) باشد و همچنین می‌تواند متدهای abstract و non-abstract داشته باشد.
یک interface فقط می‌تواند شامل متدهای abstract باشد. از Java 8 به بعد، متدهای default و static نیز در interface قابل استفاده هستند که امکان افزودن تغییرات به کدهای موجود در interface را فراهم می‌کنند.
سطح دسترسی: در یک abstract class، می‌توانید از هر نوع سطح دسترسی برای فیلدها و متدها استفاده کنید (public، protected، package-private، private).
در یک interface، فیلدها تا Java 9 به صورت ضروری public, static, و final هستند و متدها تا Java 8 به صورت ضروری public بوده‌اند. از Java 9 به بعد می‌توانید از private و private static برای متدها و private, static, و final برای فیلدها استفاده کنید.
سازندگان (Constructors): یک abstract class می‌تواند سازنده (constructor) داشته باشد. این سازنده معمولاً برای ایجاد یک نمونه از کلاس استفاده می‌شود.
یک interface نمی‌تواند سازنده داشته باشد. بنابراین، نمی‌توانید از یک interface برای ایجاد یک نمونه استفاده کنید.
با توجه به تفاوت‌های مذکور، انتخاب بین abstract class و interface بستگی به نیازها و ساختار برنامه شما دارد.  


سایر مقالات آموزشی شرکت نرم افزاری آبان رایان البرز :