Imprimir
Categoría: Java
Visto: 3155

En PC Resumen hablaremos de las interfaces en Java. Utilizando la palabra clave interface se puede abstraerse completamente la interfaz de una clase de su implementación. Es decir, se puede especificar el que una clase tiene que hacer, pero no cómo hacerlo. Las interfaces tienen una sintaxis similar a las clases, pero le faltan las variables de instancia y los métodos se declaran sin cuerpo. Una vez definida, cualquier número de clases puede implementar una interfaz. También una clase, puede implementar cualquier número de interfaces.

Para implementar una interfaz, una clase debe crear el conjunto completo de métodos definido por la interfaz.

Las interfaces llevan la mayor parte de la funcionalidad que se requiere en muchas aplicaciones. Otros lenguajes lo hacen recurriendo a la herencia múltiple (lo que existe en la teoría de la programación orientada a objetos).

Definición de una interfaz

Una interfaz se define como una clase. El acceso es público o no se utiliza. Cuando no se incluye el especificador de acceso, la interfaz sólo está disponible para otros miembros del paquete.

Los métodos que se declaran no tienen cuerpo y terminan en un punto y como después de la lista de parámetros. Son esencialmente métodos abstractos. Cada clase que incluya una interfaz debe implementar todos los métodos.

Las variables pueden declararse dentro de las declaraciones de la interfaz y son, implícitamente final y static; esto significa que no pueden ser alteradas por la implementación de la clase y que deben inicializarse con un valor constante.

Implementación de una interfaz

Una vez definida una interfaz, una o más clases pueden implementarla. Para hacerlo se debe incluir la palabra implements en una definición de clase, y luego crear los métodos definidos por la interfaz. El acceso debe ser público o por defecto.

Si una clase implementa más de una interfaz, las interfaces se separan por comas. Los métodos que implementan una interfaz deben declararse públicos. Aparte de esto se pueden definir todos los métodos que se quiera.

Acceso a implementaciones a través de referencias

Se pueden declarar variables como referencias a objetos que usan una interfaz en lugar de un tipo de clase. Se puede hacer referencia a cualquier instancia de cualquier clase que implementa una interfaz declarada por medio de estas variables. Cuando se llama a un método por medio de una de estas referencias, se llamará a la versión correcta que se basa en la instancia actual de la interfaz que está siendo referenciada. Esta es una de las características clave de las interfaces. Debido a que la búsqueda dinámica de un método durante la ejecución supone mayor tiempo de proceso, conviene tener precaución de no utilizar innecesariamente interfaces en códigos que tienen un rendimiento crítico.

Una variable de referencia a una interfaz sólo tiene conocimiento de los métodos que figuran en la declaración de la interfaz y no en el que se ha definido en las clases que la implementan.

Si una clase incluye una interfaz, pero no implementa completamente los métodos definidos por esta interfaz, debe ser declarada abstracta.

El acceso a múltiples implementaciones de una interfaz a través de una variable de referencia de la interfaz es la forma más eficaz de que dispone Java para conseguir el polimorfismo en tiempo de ejecución.

Se pueden utilizar las interfaces para importar constantes compartidas por múltiples clases declarando simplemente una interfaz que contiene variables inicializadas con los valores deseados. Cuando se incluye esta interfaz en una clase, todos estos nombres de variables estarán dentro del ámbito como constantes.

Extender una interfaz

Hay que decir finalmente que una interfaz también se puede heredar utilizando la palabra clave extends. La sintaxis es la misma que para la herencia de clases. Cuando una clase implementa una interfaz que hereda de otra interfaz, debe proporcionar las implementaciones para todos los métodos definidos en la cadena de herencia de la interfaz.