## Definir un Interface

Para crear un Interface, se debe escribir tanto la delcaración como el cuerpo del interface:

    declaraciondeInterface {
        cuerpodeInterface
    }

La Declaración de Interface declara varios atributos del interface, como su nombre o si se extiende desde otro interface. El Cuerpo de Interface contiene las constantes y las declaraciones de métodos del Interface.

### La Declaración de Interface

> Como mínimo, una declaración de interface contiene la palabra clave interface y el nombre del interface que se va a crear:

>     interface Contable {
>         . . .
>     }

> Nota: Por convención, los nombres de interfaces empiezan con una letra mayúscula al igual que las clases. Frecuentemente los nombres de interfaces terminan en "able" o "ible".

> Una declaración de interface puede tener otros dos componentes: el especificador de acceso public y una lista de "superinterfaces". Un interface puede extender otros interfaces como una clase puede extender o subclasificar otra case. Sin embargo, mientras que una clase sólo puede extender una superclase, los interfaces pueden extender de cualquier número de interfaces. Así, una declaración completa de interface se parecería a esto:

>     [public] interface Nombredenterface [extends listadeSuperInterfaces] {
>         . . .
>     }

El especificador de acceso public indica que el interface puede ser utilizado por todas las clases en cualquier paquete. Si el interface no se especifica como público, sólo será accesible para las clases definidas en el mismo paquete que el interface.

La clausula extends es similar a la utilizada en la declaración de una clase, sin embargo, un interface puede extender varios interfaces (mientras una clase sólo puede extender una), y un interface no puede extender clases. Esta lista de superinterfaces es un lista delimitada por comas de todos los interfaces extendidos por el nuevo interface.

Un interface hereda todas las constantes y métodos de sus superinterfaces a menos que el interface oculte una constante con el mismo nombre o redeclare un método con una nueva declaración.

### El cuerpo del Interface

> El cuerpo del interface contiene las declaraciones de métodos para los métodos definidos en el interface.Implementar Métodos muestra cómo escribir una declaración de método. Además de las declaraciones del métodos, un interface puede contener declaraciones de constantes. En Declarar Variables Miembros existe más información sobre cómo construir una declaración de una variable miembro.

> Nota: Las declaraciones de miembros en un interface no permiten el uso de algunos modificadores y desaconsejan el uso de otros. No se podrán utilizar transient, volatile, o synchronized en una declaración de miembro en un interface. Tampoco se podrá utilizar los especificadores private y protected cuando se declaren miembros de un interface.

> Todos los valores constantes definidos en un interfaces son implicitamente públicos, estáticos y finales. El uso de estos modificadores en una declaración de constante en un interface está desaconsejado por falta de estilo. Similarmente, todos los métodos declarados en un interface son implícitamente públicos y abstractos.

> Este código define un nuevo interface llamado coleccion que contiene un valor constante y tres declaraciones de métodos:

>     interface coleccion {
>         int MAXIMO = 500;

>         void añadir(Object obj);
>         void borrar(Object obj);
>         Object buscar(Object obj);
>         int contadorActual();
>     }

> El interface anterior puede ser implementado por cualquier clase que represente una colección de objetos como pueden ser pilas, vectores, enlaces, etc...

> Observa que cada declaración de método está seguida por un punto y coma (;) porque un interface no proporciona implementación para los métodos declarados dentro de él.

Ozito