What is the difference between an Interface and an Abstract class?
An abstract class can have instance methods that execute a default behavior. An Interface can only declare constants and instance methods, but cannot execute default behavior and all methods are implicitly abstract.
An interface has all public members and no execution. An abstract class is a class which may have the usual flavors of class members (private, protected, etc.), but has some abstract methods.