Java clase dentro de otra

Miembro de la clase interna en java

En Java, es posible definir una clase dentro de otra clase, tales clases se conocen como clases anidadas. Permiten agrupar lógicamente las clases que sólo se utilizan en un lugar, por lo tanto esto aumenta el uso de la encapsulación, y crea un código más legible y mantenible.Sintaxis:class OuterClass

outer_private = 30Comparación entre clase normal o regular y clase anidada estáticaS.NONormal/Regular clase internaClase anidada estática1.Sin que exista un objeto de clase externa, no puede haber un objeto de clase interna. Es decir, el objeto de clase interna siempre está asociado al objeto de clase externa.Sin que exista un objeto de clase externa, puede haber un objeto de clase anidada estática. Es decir, el objeto de clase anidada estática no está asociado con el objeto de clase externa.2.Dentro de la clase interna normal/regular, los miembros estáticos no pueden ser declarados.Dentro de la clase anidada estática, los miembros estáticos pueden ser declarados.3.Como el método main() no puede ser declarado, la clase interna regular no puede ser invocada directamente desde el prompt de comandos.Como el método main() puede ser declarado, la clase anidada estática puede ser invocada directamente desde el prompt de comandos.4.Tanto los miembros estáticos como los no estáticos de la clase externa pueden ser accedidos directamente.Sólo un miembro estático de la clase externa puede ser accedido directamente.Mis Notas Personales

Clases anidadas java

on UnsplashEn los lenguajes orientados a objetos, una clase anidada o interna es una clase que está completamente declarada dentro de otra clase.Esto nos permite combinar clases que están lógicamente unidas, para aumentar el encapsulamiento, para un código más conciso y mantenible.Aquí hay una visión general rápida, no profunda, de los 4 tipos de clases anidadas.Clases anidadas estáticasUna clase anidada se define como cualquier otra clase:1

Las clases anidadas estáticas se comportan como cualquier otra clase de nivel superior, y deben ser tratadas como tales. La principal ventaja es la comodidad de empaquetado.Non-Static Nested Classes / Inner ClassesLas clases anidadas no estáticas también se conocen como clases internas:1

En lugar de estar asociada al tipo de clase exterior, la clase anidada interna está vinculada a instancias de su clase envolvente.Gracias a este tipo de relación, tiene acceso a todos los miembros de la clase envolvente, no sólo a los miembros estáticos. Sin embargo, la clase interna no puede definir ningún miembro estático por sí misma. Para instanciar la clase interna, necesitamos una instancia de su clase envolvente:1

Clases internas java

En Java, al igual que los métodos, las variables de una clase también pueden tener otra clase como miembro. Escribir una clase dentro de otra está permitido en Java. La clase escrita dentro se llama clase anidada, y la clase que contiene la clase interna se llama clase externa.

Las clases internas son un mecanismo de seguridad en Java. Sabemos que una clase no puede ser asociada con el modificador de acceso private, pero si tenemos la clase como miembro de otra clase, entonces la clase interna puede hacerse privada. Y esto también se utiliza para acceder a los miembros privados de una clase.

Crear una clase interna es bastante sencillo. Sólo tienes que escribir una clase dentro de una clase. A diferencia de una clase, una clase interna puede ser privada y una vez que se declara una clase interna como privada, no se puede acceder a ella desde un objeto fuera de la clase.

Aquí puedes observar que Outer_Demo es la clase externa, Inner_Demo es la clase interna, display_Inner() es el método dentro del cual estamos instanciando la clase interna, y este método es invocado desde el método main.

Como se mencionó anteriormente, las clases internas también se utilizan para acceder a los miembros privados de una clase. Supongamos que una clase tiene miembros privados para acceder a ellos. Escribe una clase interna en ella, devuelve los miembros privados desde un método dentro de la clase interna, digamos, getValue(), y finalmente desde otra clase (desde la que quieres acceder a los miembros privados) llama al método getValue() de la clase interna.

Clase anónima de Java

En Java se puede definir una clase dentro de otra clase. Una clase puede estar anidada dentro de otra clase o dentro de un método. Una clase que no está anidada se llama clase de nivel superior y una clase que define una clase anidada es una clase externa.

La clase interna tiene acceso a las variables y métodos de la instancia de la clase adjunta, incluso a los privados, como se ha visto anteriormente. Esto la hace muy diferente de las clases anidadas en C++, que son equivalentes a las clases internas «estáticas», ver más abajo.

Un objeto interno tiene una referencia al objeto externo. En otras palabras, todos los objetos internos están ligados al objeto externo. El objeto interno sólo puede ser creado a través de una referencia al objeto «externo». Véase más abajo.

Puedes acceder directamente a la referencia al objeto externo desde una clase interna con la sintaxis OuterClass.this; aunque esto suele ser innecesario porque ya tienes acceso a sus campos y métodos.

Las clases internas se compilan en archivos bytecode «.class» separados, con el nombre de la clase que las encierra, seguido de un «$», seguido del nombre de la clase interna. Así, por ejemplo, la clase interna anterior se compilaría en un archivo llamado «OuterClass$InnerClass.class».