Una guía para principiantes sobre el uso de interfaces en Java

Una interfaz es un tipo de referencia que se utiliza para hacer cumplir un contrato con una clase. Un contrato se refiere a la obligación de implementar los métodos que define una interfaz.

Las interfaces proporcionan una abstracción entre los métodos que definen y cómo el usuario los implementa en una clase. Un caso de uso práctico de esto es en las API (interfaces de programación de aplicaciones).

Las API permiten que su programa se comunique con otros programas sin saber cómo se implementan. Esto es importante tanto por razones de propiedad (para la empresa propietaria de los derechos) como por su fácil desarrollo.

Echemos un vistazo a cómo utilizar las interfaces Java.

Definición de interfaces

Para declarar una interfaz, coloque la palabra clave interfaz antes del nombre de la interfaz.

 interface Car{
// constant declarations, if any
int tyres = 4;
// method signatures
int lights (int brightness);
int turn (int tyres, String direction){
// some code
}
}

En el encabezado de su interfaz, también puede incluir su nivel de visibilidad antes que la interfaz de palabras clave.

Los valores de una interfaz son constantes. Estos valores son públicos, estáticos y finales por defecto. Por lo tanto, no es necesario utilizar estas palabras clave al declarar valores en el cuerpo de una interfaz.

Relacionado Cómo administrar el alcance variable en Java

El cuerpo de una interfaz también puede tener métodos estáticos abstractos predeterminados . Estos métodos son públicos por defecto, por lo que no es necesario indicar estos modificadores de acceso al declararlos.

Los métodos abstractos se declaran omitiendo las llaves del cuerpo de un método. Vea la línea 7 en el código anterior. Los métodos estáticos se declaran procediendo al nombre del método con la palabra clave static y los métodos predeterminados se declaran con el modificador predeterminado .

Ahora sería un buen momento para mencionar que debes usar métodos declarados en una interfaz en cualquier clase que lo implemente. No hacerlo hará que el compilador "haga cumplir el contrato" dando un error de compilación.

Esta propiedad particular de las interfaces puede tener algunos inconvenientes. Considere un caso en el que un proveedor de interfaz de programación de aplicaciones (API) decide agregar más métodos a sus interfaces, pero varias aplicaciones se basan en las interfaces antiguas. Los desarrolladores que utilicen las interfaces antiguas en sus programas tendrían que volver a escribir su código, lo que no es práctico.

Entonces, ahí es donde entran los métodos predeterminados . Permiten a los proveedores de API agregar más métodos a sus interfaces al tiempo que garantizan la compatibilidad binaria con versiones de interfaz anteriores.

 default int getDirection ( String coordinates){
// write some code to give a default implementation
}

El método anterior muestra cómo se declara un método predeterminado llamado getDirection . Tenga en cuenta que debe incluir una implementación de un método predeterminado cuando lo escribe.

Usando interfaces

Ahora que hemos definido interfaces en Java, podemos pasar a cómo implementarlas. Lo encontrará en la sección siguiente.

Implementación de interfaces

Para implementar una interfaz, use la palabra clave implements usando esta sintaxis:

 class A implements interface P{
}

Recuerde que debe utilizar todos los métodos de interfaz de la clase. Puede ignorar esta regla solo si uno de los métodos está definido como predeterminado en la interfaz.

Relacionado: Introducción al uso de listas vinculadas en Java

Si desea que su clase implemente múltiples interfaces, puede separarlas usando comas en su declaración de encabezado.

Ejemplo:

 class A implements interface P, Q, R{
}

Si la clase que está implementando la interfaz es una subclase, use la siguiente sintaxis:

 class A extends B implements C, D{
}

Las interfaces permiten múltiples herencias en Java. Normalmente, una clase solo puede extender una clase (herencia única). Las interfaces son la única forma en que Java puede llevar a cabo múltiples herencias.

Las interfaces también pueden extender otras interfaces, al igual que una clase puede extender otra clase. La interfaz secundaria hereda los métodos de la interfaz que extiende.

Vea el ejemplo a continuación:

 interface A extends B{
}

Además de usar métodos predeterminados para modificar una interfaz sin requerir que los desarrolladores modifiquen sus programas actuales, también puede extender las interfaces existentes.

Ahora tiene algunos conocimientos básicos sobre interfaces Java

Las interfaces en Java demuestran la abstracción, uno de los cuatro pilares de la programación orientada a objetos. El polimorfismo es uno de esos cuatro pilares. Se refiere a la capacidad de un método para adoptar muchas formas.

Puede implementar polimorfismo en Java mediante la sobrecarga de métodos o la anulación de métodos. Lo siguiente en su lista de lectura de Java debería ser cómo implementar estas funciones.