Está en la página 1de 3

Clases anidadas

El lenguaje de programacin Java le permite definir una clase dentro de otra


clase. Una clase de este tipo se llama una clase anidada y se ilustra aqu:
clase OuterClass {
...
clase NestedClass {
...
}
}

Terminologa: clases anidadas se dividen en dos categoras: estticos y no


estticos. Clases anidadas que se declaran esttica se llaman
simplemente clases anidadas estticas. Clases anidadas no estticos se
llaman clases internas.
clase OuterClass {
...
clase esttica StaticNestedClass {
...
}
clase InnerClass {
...
}
}

Una clase anidada es un miembro de su clase envolvente. Clases anidadas no


estticos (clases internas) tienen acceso a otros miembros de la clase
envolvente, incluso si son declarados privado. Clases anidadas estticas no
tienen acceso a otros miembros de la clase envolvente. Como miembro de
laOuterClass, una clase anidada puede
declararse privado, pblico, protegido o empaquetar privada. (Recordemos
que las clases externas slo pueden ser
declaradas pblica o empaquetar privada.)
Por qu utilizar Anidado clases?
Hay varias razones de peso para que el uso de clases anidadas, entre ellos:
Es una forma de agrupar lgicamente clases que se utilizan
nicamente en un solo lugar.
Aumenta la encapsulacin.
Clases anidadas pueden conducir a un cdigo ms legible y
mantenible.
Agrupacin lgica de clases -Si una clase es til a una sola otra clase,
entonces es lgico para incrustarlo en esa clase y tener los dos
juntos. Jerarquizacin esas "clases de ayuda" hace su paquete ms gil.

El aumento de la encapsulacin -Considere dos clases de nivel superior, A y


B, donde B necesita el acceso a los miembros de A que de otro modo se
declararon privada. Al ocultar la clase B a la clase A, los miembros de A
pueden ser declaradas privada y B pueden acceder a ellos. Adems, B en s se
puede esconder del mundo exterior.
Ms fcil de leer, cdigo mantenible -Nesting clases pequeas dentro de las
clases de nivel superior coloca el cdigo ms cerca de donde se utiliza.
Clases anidadas estticas
Al igual que con los mtodos de clase y variables, una clase anidada esttica
se asocia con su clase externa. Y al igual que los mtodos estticos de clase,
una clase anidada esttica no puede referirse directamente a las variables de
instancia o mtodos definidos en su clase envolvente - puede utilizarlos slo a
travs de una referencia de objeto.
Nota: Una clase anidada esttica interacta con los miembros de instancia de
la clase externa (y otras clases) al igual que cualquier otra clase de nivel
superior. En efecto, una clase anidada esttica es conductualmente una clase
de nivel superior que se ha anidado en otra clase de nivel superior para el
envasado de conveniencia.
Clases anidadas estticas se accede utilizando el nombre de clase envolvente:
OuterClass.StaticNestedClass

Por ejemplo, para crear un objeto de la clase anidada esttica, utilice esta
sintaxis:
OuterClass.StaticNestedClass nestedObject = new
OuterClass.StaticNestedClass ();

Clases Internas

Al igual que con los mtodos de instancia y variables, una clase interna est
asociada a una instancia de la clase envolvente y tiene acceso directo a los
mtodos y campos de ese objeto. Adems, debido a una clase interna se asocia
con una instancia, no puede definir cualquier s los miembros estticos.
Existen objetos que son instancias de una clase interna dentro de una instancia
de la clase externa. Considere las siguientes clases:
clase OuterClass {
...
clase InnerClass {
...
}
}

Una instancia de InnerClass slo puede existir dentro de una instancia


de OuterClass y tiene acceso directo a los mtodos y campos de su instancia
que encierra. La siguiente figura ilustra esta idea.

Un InnerClass existe dentro de una


instancia de OuterClass

Para crear una instancia de una clase interna, primero debe crear una instancia
de la clase externa. A continuacin, cree el objeto interno dentro del objeto
externo con esta sintaxis:
OuterClass.InnerClass InnerObject = outerObject.new InnerClass ();

Adems, hay dos tipos especiales de clases internas: clases locales y clases
annimas (tambin llamadas clases internas annimas). Ambos se discutirn
brevemente en la siguiente seccin.

También podría gustarte