CodeShot

Abstract Class در مقابل Interface

Abstract Class هم قرارداد و هم پیاده‌سازی ارائه می‌دهد، اما Interface فقط قرارداد بین کلاس‌ها تعریف می‌کند.

ویژگیAbstract ClassInterface
پیاده‌سازی متدداردمحدود
فیلدداردندارد
Constructorداردندارد
Multiple Inheritanceخیربله
مناسب برایBase ClassContract
Couplingبیشترکمتر

کِی از Abstract Class استفاده کنیم؟

وقتی کلاس‌های مشتق رفتار و داده مشترک دارند.

کِی از Interface استفاده کنیم؟

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

مثال Abstract Class

public abstract class Animal { public abstract void Speak(); }

مثال Interface

public interface IAnimal { void Speak(); }

اشتباه رایج

استفاده از Abstract Class فقط برای تعریف چند متد بدون منطق مشترک.

جمع‌بندی

برای اشتراک رفتار → Abstract Class

برای قرارداد → Interface