1) A class can extend only one abstract class but implement multiple interfaces.
2) An interface can only declare constants (any field) and public abstract methods (any method). An abstract class can have anything other classes can have: private fields, instance fields, protected members, constructors, you name it. Unlike other classes, it can also have abstract methods. Unlike interfaces, these abstract methods can also be protected or have no access modifier. Please note that they cannot be private - private methods cannot be overridden, and therefore private abstract methods would never get an implementation.