What are the differences between abstract class and interface?
There are none, these two terms designate the same concept.
An interface does not have an implementation, the abstract class is a partial implementation.
An abstract class can define protected methods.
An abstract class can define private methods.