به یاد داشته باش! Interfaceها یک قالب (الگو) برای پیاده سازی کلاس ها می باشند. بدین صورت که با تعریف مشخصات کلی متدها (امضای متد: ورودی، خروجی، و...) بدون پیاده سازی متدها، کلاس های مشتق شده را ملزم به پیاده سازی کامل آن متدها می کند. بنابراین، فقط مشخصات متدها یک بار در Interface تعریف می شوند و هر جا که لازم باشد پس از ارث بری، متدهای آنها پیاده سازی می شود. همچنین Interfaceها فاقد سازنده و فیلد هستند و نمی نوان از روی آنها نمونه ای ایجاد کرد.
کلاس Abstract یکی از ابزارهای مهم OOP می باشد که نمی توان از آن نمونه ای ساخت. به عبارتی دیگر نمی توانیم متغیری از کلاس Abstract تعریف کنیم. یک کلاس Abstract می تواند دارای متدهای Abstract باشد، که شبیه Interface فقط اعلان می شوند و باید در کلاس های مشتق شده، بازنویسی شوند. البته می توان در این کلاس ها متدهائی داشت که Abstract نیستند و احتیاجی به پیاده سازی آنها در کلاس های مشتق شده ندارند.
یکی از مزیت های کلاس Abstract فراهم نمودن کلاس پایه برای دیگر کلاس های مشتق شده می باشد با این توضیح که متدهای آن می توانند کد نویسی شده باشند یا نه! از طرفی پیاده سازی تمام متدهای Abstract در کلاس مشتق شده اجباری نیست .(برخلاف Interface).