This content has been marked as final. Show 1 reply
An abstract class can contain some method implementations, or indeed all the method implementations. It may contain methods with all the various access modifiers. It cannot be instantiated. A class may inherit from only a single abstract class.
An interface contains only public method stubs and constants. A class may implement multiple interfaces. An interface cannot (obviously) be instantiated.
Abstract classes are particularly useful when you need to provide a semi-complete implementation for reuse. Interfaces are used more like types.
Look at java.util.* for some good examples of the use of both.