Vous êtes sur la page 1sur 3

Las clases anidadas nos permiten definir una clase dentro de otra, de esta forma se

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.

 Una clase anidada no existe independientemente de su clase adjunta. Por lo


tanto, el alcance de una clase anidada está limitado por su clase externa.
 Una clase anidada también es miembro de su clase adjunta. También es posible
declarar una clase anidada que es local a un bloque.
 Como miembro de su clase adjunta, una clase anidada se puede declarar private,
public, protected, o default (Leer sobre Modificadores de acceso).
 Una clase anidada tiene acceso a los miembros, incluidos los miembros
privados, de la clase en la que está anidado. Sin embargo, lo inverso no es
verdadero, es decir, la clase adjunta no tiene acceso a los miembros de la clase
anidada.
 Hay dos tipos generales de clases anidadas: las que están precedidas por el
modificador static (static nested class) y las que no lo están (inner class).

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.

Características de una clase anidada

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 ();

Vous aimerez peut-être aussi