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:
