An interface is a pure abstraction with only method names and constants, an abstract class can have variables and method implementations.
An interface can implement multiple interfaces, an abstract class cannot extend from multiple classes.
An interface does not have a state, an abstract class can have member variables to store state.
Use abstract class to provide some common implementation to be shared across multiple derived classes.