La declaración de una interfaz en Java es similar a la declaración de una clase, aunque con algunas variaciones:
- Se utiliza la palabra reservada
interface
en lugar declass
. - Puede utilizarse el modificador
public
. Si incluye este modificador la interfaz debe tener el mismo nombre que el archivo .java en el que se encuentra (exactamente igual que sucedía con las clases). Si no se indica el modificadorpublic
, el acceso será por omisión o "de paquete" (como sucedía con las clases). - Todos los miembros de la interfaz (atributos y métodos) son
public
de manera implícita. No es necesario indicar el modificadorpublic
, aunque puede hacerse. - Todos los atributos son de tipo
final
ypublic
(tampoco es necesario especificarlo), es decir, constantes y públicos. Hay que darles un valor inicial. - Todos los métodos son abstractos también de manera implícita (tampoco hay que indicarlo). No tienen cuerpo, tan solo la cabecera.
Como puedes observar, una interfaz consiste esencialmente en una lista de atributos finales (constantes) y métodos abstractos (sin implementar). Su sintaxis quedaría entonces:
[public] interface <NombreInterfaz> {
[public] [final] <tipo1> <atributo1>= <valor1>;
[public] [final] <tipo2> <atributo2>= <valor2>;
...
[public] [abstract] <tipo_devuelto1> <nombreMetodo1> ([lista_parámetros]);
[public] [abstract] <tipo_devuelto2> <nombreMetodo2> ([lista_parámetros]);
...
}
Si te fijas, la declaración de los métodos termina en punto y coma, pues no tienen cuerpo, al igual que sucede con los métodos abstractos de las clases abstractas.
El ejemplo de la interfaz Depredador que hemos visto antes podría quedar entonces así:
public interface Depredador {
void localizar (Animal presa);
void cazar (Animal presa);
...
}
Serán las clases que implementen esta interfaz (León, Leopardo, Cocodrilo, Rana, Lagarto, Hombre, etc.) las que definan cada uno de los métodos por dentro.