Abstract class – is something between a regular class and a pure interface. The purpose of this is to provide a kind of template to inherit from and to force the inheriting class to implement the abstract methods.
Interface – is a special case of abstract classes where ALL methods are abstract.