Interface (Java)
An interface in the Java programming language is an abstract type which is used to specify an interface (in the generic sense of the term) that classes must implement. Interfaces are introduced with the interface keyword, and may only contain function signatures and constant declarations (variable declarations which are declared to be both static and final).
It is a common Java naming convention (though not a requirement) that interfaces (when named in the English language) have names ending in the suffix "-able", as in cloneable or serializable.
As interfaces are abstract, they cannot be instantiated. Object references in Java may be specified to be of interface type; in which case they must be bound to null, or an object which implements the interface.
The primary capability which interfaces have, and classes lack, is multiple inheritance. All classes in Java (other than java.lang.Object, the root class of the Java type system) must have exactly one base class (corresponding to the extends clause in the class definition; classes without an extends clause are defined to inherit from Object); multiple inheritance of classes is not allowed. Java classes may choose to implement as many interfaces as the programmer desires (with the implements clause), however. A java class which implements an interface, but which fails to implement all the methods specified in the interface, becomes an abstract base class, and must be declared abstract in the class definition.