In Java, an interface is a way of defining a template
for some of the methods that a class must
implement.
Interfaces may only contain method signatures (and
static final variables: Java's version of constants.)
An interface can not contain any instance variables or method
definitions.
Think of an interface as if it were a small contract.
Classes agree to abide by the contract by saying they
implement the interface.
The compiler will make sure that classes that say they
implement an interface abide by the contract.