Interfaces en Java(I)

Cuando empece a programar en java se me vinieron muchas dudas referente a la programación orientada objeto, una de estas dudas era Que es una interfaz?, por que tengo que usar una clase con esta estructura? y cual es la ventaja de su uso. En esta entrada voy hacer referencia a esas dudas.

 Asi que empecemos…

Una interfaz la podemos definir en JAVA  como una colección de métodos abstractos y propiedades, para los que todavía no están familiarizados con la programación POO un método abstracto no es mas que un método declarado pero no implementado,en otras palabras, es un método en el cual únicamente vamos a escribir su nombre, parámetros y de ser necesario el  tipo de dato devuelto, pero no vamos a escribir  su código, es decir la firma del metodo.

Entonces en las interfaces básicamente vamos a especificar lo que la clase debe hacer pero no escribiremos nada de código. Serán las clases que implementen  dicha interfaz  la que se encargue de describir la lógica del comportamiento de los métodos.

En JAVA para declarar una clase de tipo interface lo hacemos usando la palabra reservada interface y para hacer que una clase implemente una interfaz usamos la palabra reservada implements
Como lo dije anteriormente todo método de una interface tiene que ser abstracto y público  y no es necesario  de declararlo, es decir, no hace falta poner public abstract porque  ya que por defecto todos los métodos son de este modo. Otra característica de las interfaces es que no poseen constructor.


Bien, ahora al momento de declarar los atributos de una interface estos tiene que ser del  tipo public static final, en palabras sencillas, tienen que ser atributos de clase, públicos y constantes. Al igual que como en los métodos estas palabras reservadas no tienen que ser escritas cuando declaramos un atributo puesto que todos los campos declarados en una interface sera tratado como si incluyeran las palabras public static final. Al modo de recordar static equivale a que el atributo pertenece a esa  “clase” y final que es una “constante”.  

En java una clase puede implementar una o muchas interfaces, esto lo podemos indicar después de la palabra reservada implements seguida de los nombres de las interfaces cada una separada por comas 


Es necesario recordar que JAVA no permite herencia múltiple, es decir, que una clase solo podrá  extender de una clase pero si podra implementar varias interfaces y estos sera lo más parecido que tiene Java a la herencia múltiple.


Algo en común que tenemos lo que nos estamos iniciando en JAVA es que no conocemos su documentación y tratamos de hacer cosas como esta:



Esto al tratar de compilarlo nos dará error, y en principio dirás que pasa tengo todo bien pero que como no conocemos su documentación tenemos este tipo de errores de principiantes, resulta ser que la clase List es una interface, por lo tanto tenemos que seleccionar una clase que implemente dicha interface para poder instanciarla.


Ahora una preguntémonos lo siguiente: ¿como se si mi clase clasifica para ser definida como una interface?, para responder esto podemos tomar en cuentas dos cosas: 
  1. La primera es que si tenemos una clase que provee un esqueleto para otras clases las cuales son las propias clases las que van a desarrollar su comportamiento entonces, dicha clase deben ser definida como una interfaz.
  2. Si un método de nuestra clase debe ser definido, entonces esta clase no clasifica para ser una interface.
Para muchas personas dará igual definir una clase como interface o como clase abstracta , pero las interfaces nos otorgan flexibilidad y extensibilidad en la arquitectura de nuestro proyecto, por lo que comente lineas arribas, que una clase puede implementar varias interfaces y simular la herencia múltiple que necesitamos.

Esto fue todo por esta entrada, espero que le sirva de ayuda... 

System.out.println("Bye World");

Comentarios

Entradas populares