Programación en Java/Interfaces
Las interfaces son uno de los mecanismos que dispone Java para establecer las características que debe cumplir una clase para que sea apta para un determinada necesidad de una aplicación. Podría decirse que las interfaces son plantillas de métodos que deben incluir determinadas clases.
Veamos primero los detalles y luego profundizaremos sobre la necesidad de estas construcciones.
Desde el punto de vista estructural, una interface es una construcción similar a una clase que carece de implementación en sus métodos. La palabra reservada del lenguaje para declarar este tipo de construcciones es interface.
public interface Dibujable{ public void dibujar(); }
Como puede observarse el método dibujar termina en "punto y coma" y no tiene ningún código de implementación (obsérvese que no incorpora llaves a continuación).
Posteriormente podremos declarar clases que cumplan (implementen) la interface, para ello, en la declaración de la clase emplearemos la palabra implements seguida del nombre de la inteface a implementar:
public class Rectangulo implements Dibujable{ public void dibujar(){ System.out.println("____________"); System.out.println("| |"); System.out.println("|__________|"); } }
Una clase (Rectangulo) implementa una interface (Dibujable) cuando además de declararlo con la palabra implements tiene todos los métodos (en este ejemplo, el método dibujar) declarados en la interface.
A partir de este momento, podremos emplear variables de la interface (Dibujable) para hacer referencia a objetos de las clases que la implementan (Rectangulo). Y mediante esa variable podremos ejecutar los métodos (dibujar) del objeto asignado a la variable.
Dibujable grafico = new Rectangulo(); grafico.dibujar();
El compilador solamente permitirá asignar referencias a objetos cuya clase implemente la interface. De esta forma se garantiza que todos los métodos ejecutables con la variable estarán disponibles en el objeto.
Las interfaces permiten la realización de polimorfismo, ya que podremos tratar de una misma forma objetos de clases diferentes. Esto es así porque si estos objetos implementan la misma interface, en ella se recoge el conjunto de métodos que tienen en común y por lo tanto se pueden ejecutar con variables de la interface.