Los interfaces en Java nos solucionan en parte la no existencia de la herencia múltiple; habilitando así las posibilidades del polimorfismo en la herencia múltiple sin los problemas que esta conlleva.
Los interfaces son un tipo de clase especial que no implementa ninguno de sus métodos. Todos son abstractos. Por tanto no se pueden instanciar.
La declaración de un interface Java se realiza mediante la keyword: interface seguido de su nombre.
De los interfaces también se hereda, aunque se Suele decir implementa. Y se realiza mediante la keyword: implements.
Una clase puede heredar de múltiples interfaces.
Una clase puede heredar de otra clase y a la vez heredar de múltiples interfaces.
Un interface puede también definir constantes.
Si una clase que hereda de un interface, no implementa todos los métodos de este, deberá ser definida como abstracta.
Un interface se trata como un tipo cualquiera.
Por tanto, cuando hablamos de polimorfismo, significa que una instancia de una clase puede ser referenciada por un tipo interface siempre y cuando esa clase o una de sus superclases implemente dicho interface.
Un interface puede heredar de otros interfaces.
Interface vs. Clase Abstracta
Un interface no puede implementar ningún método.
Una clase puede implementar n interfaces pero solo una clase.
Un interface no forma parte de la jerarquía de clases. Clases dispares pueden implementar el mismo interface.
El objetivo de un método abstracto es forzar una interfaz (API) pero no una implementación.