Concepto de interface
Una interface es un conjunto de declaraciones de métodos (sin definición). También puede definir constantes, que son implícitamente public, static y final, y deben siempre inicializarse en la declaración. Estos métodos definen un tipo de conducta. Todas las clases que implementan una determinada interface están obligadas a proporcionar una definición de los métodos de la interface, y en ese sentido adquieren una conducta o modo de funcionamiento.
Una clase puede implementar una o varias interfaces. Para indicar que una clase implementa una o más interfaces se ponen los nombres de las interfaces, separados por comas, detrás de la palabra implements, que a su vez va siempre a la derecha del nombre de la clase o del nombre de la super-clase en el caso de herencia. Por ejemplo,
public class CirculoGrafico extends Circulo
implements Dibujable, Cloneable {
…
}
¿Qué diferencia hay entre una interface y una clase abstract? Ambas tienen en común que pueden contener varias declaraciones de métodos (la clase abstract puede además definirlos). A pesar de esta semejanza, que hace que en algunas ocasiones se pueda sustituir una por otra, existen también algunas diferencias importantes:
1. Una clase no puede heredar de dos clases abstract, pero sí puede heredar de una clase abstract e implementar una interface, o bien implementar dos o más interfaces.
2. Una clase no puede heredar métodos -definidos– de una interface, aunque sí constantes.
3. Las interfaces permiten mucha más flexibilidad para conseguir que dos clases tengan el mismo comportamiento, inpendientemente de su situación en la jerarquía de clases de Java.
4. Las interfaces permiten “publicar” el comportamiento de una clase desvelando un mínimo de información.
5. Las interfaces tienen una jerarquía propia, independiente y más flexible que la de las clases, ya que tienen permitida la herencia múltiple.
6. De cara al polimorfismo, las referencias de un tipo interface se pueden utilizar de modo similar a las clases abstract.
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra