Categorías
Classes & Interfaces

¿Qué es la interfaz interna en Java?

¿Qué es la interfaz interna en Java?

La interfaz interna también se llama interfaz anidada, lo que significa declarar una interfaz dentro de otra interfaz. Por ejemplo, la interfaz de entrada se declara en la interfaz de mapa.

public interface Map {
	interface Entry{
		int getKey();
	}
 
	void clear();
}

¿Por qué utilizar la interfaz interna?

Hay varias razones convincentes para utilizar la interfaz interna:

  • Es una forma de agrupar lógicamente interfaces que solo se utilizan en un lugar.
  • Aumenta la encapsulación.
  • Las interfaces anidadas pueden conducir a un código más legible y fácil de mantener.

Un ejemplo de interfaz interna utilizada en la biblioteca estándar de Java es java.util.Map y Java.util.Map.Entry. Aquí java.util.Map también se usa como espacio de nombres. La entrada no pertenece al ámbito global, lo que significa que hay muchas otras entidades que son Entradas y no son entradas del Mapa necesarias. Esto indica que Entrada representa entradas relacionadas con el Mapa.

¿Cómo funciona la interfaz interna?

Para descubrir cómo funciona la interfaz interna, podemos compararla con clases anidadas. Las clases anidadas se pueden considerar como un método regular declarado en la clase externa. Dado que un método puede declararse como estático o no estático, las clases anidadas de forma similar pueden ser estáticas y no estáticas. La clase estática es como un método estático, solo puede acceder a los miembros de la clase externa a través de objetos. La clase no estática puede acceder a cualquier miembro de la clase externa.

Debido a que no se pueden crear instancias de una interfaz, la interfaz interna solo tiene sentido si es estática. Por lo tanto, por defecto, la inter interfaz es estática, no importa si agrega manualmente estática o no.

  Nivel de acceso: predeterminado frente a protegido

¿Un ejemplo simple de interfaz interna?

Map.java

public interface Map {
	interface Entry{
		int getKey();
	}
 
	void clear();
}

MapImpl.java

public class MapImpl implements Map {
 
 
	class ImplEntry implements Map.Entry{
		public int getKey() {
			return 0;
		}		
	}
 
	@Override
	public void clear() {
		//clear
	}
}

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *