(Structured Java language programs have two basic components: classes and interfaces. Interfaces consist of constants and general methods. An interface can extend multiple interfaces, and an interface can also be inherited by multiple interfaces. General classes can be used to indicate those general concepts that cannot or do not need to be instantiated. General classes need to be inherited. General classes include some attributes and behaviors shared by subclasses. The mechanism of storing a group of related classes and interfaces in a "package" to form a "class library" for reuse in multiple occasions is called class reuse.
Chapter 4 of Java Program Design, Use and Development: Interface, General Class and Package.ppt)