We have not yet discussed one of most important object-oriented features of Java, namely the notion of an interface. In essence, an interface is a special form of lightweight abstract class. We use the term lightweight to describe an abstract class with no fields and no concrete methods; the only members are abstract methods. The key difference between an interface and a conventional abstract class is that a class or interface can have unlimited number of immediate superinterfaces but it can only have one superclass.
An interface definition has almost the same syntax as a class definition:
interface name {The only significant difference is the keyword interface instead of class.
... member declarations ...
}
A class can implement an arbitrary number of interfaces. A class definition can optionally include an implements clause immediately following the extends clause (assuming one is present) in the class header. Sample programs using interfaces appear in 1.9.