¿Qué es una Interface en Java?

Una interfaz en Java esel nivel máximo de abstracción. Si una clase abstracta es un «modelo a medio construir», una interfaz es un «contrato» que define qué debe hacer una clase, pero no cómo debe hacerlo.  

Aquí tienes sus características principales y cómo se diferencian de las clases:

1. Definición y Concepto

Una interfaz se declara con la palabra reservada interface. No contiene variables de instancia (solo constantes) y, por defecto, todos sus métodos son abstractos y públicos, aunque no escribas las palabras abstract o public.  

  • Contrato: Cuando una clase «implementa» una interfaz, está obligada a proporcionar el código de todos los métodos definidos en ella.  
  • Múltiple implementación: A diferencia de la herencia (donde solo puedes heredar de una clase), en Java una clase puede implementar muchas interfaces a la vez.  
2. Sintaxis y Ejemplo

En lugar de extends, se utiliza la palabra reservada implements.  

Imagina que tenemos diferentes tipos de objetos que pueden «volar», pero no todos son animales ni todos son máquinas: