If a class does not implement all the abstract methods it inherits must be declared astract itself.
Both interface an abastract class declare a contract (set of methods) that other classes (subclasses or implementing classes) must obbey. They define a base type to use the "magic" of
polymorphism.
Use an interface as the base type whenever a default implementation is not needed for subclasses: Abstract classes may have non-anstract methods that are inherited by subclasses, however you can only inherit from one class; whereas it is possible to implement several interfaces.
You migth find interesting the reading of
The Java Tutorial.
[ May 25, 2003: Message edited by: Jose Botella ]