1- یک کلاس معمولی می تواند از یک کلاس Abstract ارث بری کند، ولی همان کلاس می تواند از چندین Interface ارث ببرد.
2- یک Interface فقط می تواند اعلان متدها و خصوصیت ها را داشته باشد، اما یک کلاس Abstract علاوه بر آنها می توانید متدها و خصوصیت هایی با کدهای کامل داشته باشد.
3- عناصر موجود در کلاس Abstract می توانند مانند یک کلاس معمولی دارای سطح دسترسی باشند ولی Interface ها فاقد این امکان می باشند.
4- وقتی شما متدی را به کلاس Abstract اضافه می کنید، به طور خودکار به همه زیر کلاس ها اعمال می شود اما در Interface اگر متدی اضافه کنید، باید در تمام زیر کلاس ها، آن را اعمال کنید.
5- کلاس Abstract مانند کلاس های معمولی می توانند دارای فیلد و عناصر دیگری (مثل ثابت ها) باشند در حالی که Interface فاقد این امکان می باشد. همچنین کلاس abstract می تواند شامل سازنده باشد، اما اینترفیس نمی تواند.
6- Abstract یکی از انواع کلاس است ولی Interface کلاس نیست.
7- اینترفیس تنها می تواند از اینترفیس ارث بری کند، اما کلاس abstract می تواند از اینتر فیس، کلاس Abstract یا سایر کلاس ها ارث بری کند.