Interfaces allow a class to use constants and methods that have been declared in an unrelated class as its own. The interface is similar to an abstract class, but it's not an abstract class because it's not part of the class hierarchy. Interfaces are sometimes thought of as a way to implement muliple inheritance in Java. Essentially, an interface is a promise that your class will implement certain methods (but how these methods are implemented is up to you).