Académique Documents
Professionnel Documents
Culture Documents
puede acceder a la información de la clase que la contiene, con ello podremos satisfacer
requerimientos de forma más sencilla al no tener que construir estructuras
independientes.
Clases anidadas
Una clase anidada es una clase definida dentro del ámbito o alcance de otra clase, es
decir, está dentro de la clase que la va a contener, esto hace que en vez de tener que
instanciar dentro de la clase interna un objeto de la clase externa para utilizar sus
atributos y métodos podamos hacerlo directamente ya que está dentro de su alcance.
Las clases anidadas te permiten agrupar lógicamente clases que solo se utilizan en un
lugar, por lo tanto, esto aumenta el uso de la encapsulación y crea un código más fácil
de leer y de mantener.
Debemos tener cuidado y no confundir esto con clases separadas dentro del mismo
archivo ya que es un concepto totalmente diferente, en este caso hablamos de una clase
dentro de otra y no de que comparten el archivo, veamos la diferencia entre ambas
definiciones.
En la imagen vemos en la parte superior como las clases en el mismo archivo están una
sobre otra, pero en la parte inferior vemos como la clase anidada está dentro de la
definición de otra clase, esta diferencia parece evidente, sin embargo es bueno hacer la
aclaratoria para evitar problemas a futuro.
1- Una clase anidada es compilada dentro de la clase que la contiene, esto genera un
archivo .class con una combinación de nombres del estilo
ClaseExterna$ClaseAnidada.class, si seguimos el ejemplo de la imagen el nombre
sería Prueba$Anidada.class.
2- Una clase anidada puede utilizar y hacer referencia de los atributos y métodos de la
clase que la contiene sin necesidad de hacer una instancia nueva, gracias a esto podemos
simplificar un poco el contenido de nuestro programa, sobre todo al trabajar con
orientación a eventos, veamos en la siguiente imagen como se expresa esto:
3- La clase anidada puede ser afectada por modificadores de visibilidad y asumir sus
características, además que también puede ser declarada como static, sin embargo si
hacemos esto último solo podremos acceder a los métodos static de la clase que la
contiene.
4- A pesar de ser clases anidadas estas pueden ser instancias por otras clases diferentes
a las clases que las contienen, para ello se puede utilizar la siguiente forma:
ClaseExterna.ClaseAnidada objetoClaseAnidada = ObjetoClaseExterna.new
ClaseAnidada();
En caso de que nuestra clase anidada sea del tipo static debemos entonces utilizar la
siguiente forma:
ClaseExterna. ClaseAnidada objetoClaseAnidada = new
ClaseExterna.ClaseAnidada ();