Clases Anidadas en Java

POO

En Java, puede definir una clase anidada. Esta es una clase que se declara dentro de otra clase. Francamente, la clase anidada es un tema algo avanzado. De hecho, las clases anidadas ni siquiera estaban permitidas en la primera versión de Java. No fue hasta Java 1.1 que se agregaron.

Sin embargo, es importante que sepa cuáles son y la mecánica de cómo se utilizan, ya que juegan un papel importante en muchos programas del mundo real.

1. Clases Anidadas o Nested Classes

¿Qué es una clase anidada? 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).
Clases Anidadas o Nested Classes
Clases Anidadas (Nested Classes)

El único tipo que nos preocupa en este artículo es la variedad estática, es decir la clase anidada estática.

Sintaxis:

clase ClaseExterior
{ 
... 
    clase ClaseAnidada
    { 
        ... 
    } 
}

2. Clases anidadas estáticas

Al igual que con los métodos y variables de clase, una clase anidada estática está asociada a su clase externa. Y al igual que los métodos de clase estáticos, una clase anidada estática no puede hacer referencia directamente a variables de instancia o métodos definidos en su clase adjunta: solo puede usarlos a través de una referencia de objeto.

Se accede a ellos usando el nombre de la clase adjunta. Así:

ClaseExterna.ClaseAnidadaStatic

Por ejemplo, para crear un objeto para la clase anidada estática, use esta sintaxis:

ClaseExterna.ClaseAnidadaStatic objetoAnidado = new ClaseExterna.ClaseAnidadaStatic();

Ejemplo:

// Programa Java para demostrar el acceso a una clase anidada estática

//Clase externa
class ClaseExterna
{
   //Miembro estático
    static int externo_x=10;

    //Miembro de instancia
    int externo_y=20;

    //Miembro privado
    private static int externo_privado=30;

    //Clase anidada estática
    static class ClaseAnidadaStatic{
        void mostrar(){
            //Puede acceder al miembro estático de la clase externa
            System.out.println("externo_x: "+externo_x);

            //Puede acceder a mostrar un miembro estático privado de la clase externa
            System.out.println("externo_privado: "+externo_privado);

            // La siguiente declaración dará error de compilación
            // ya que la clase anidada estática no puede acceder directamente
            // a un miembro no estático
            // System.out.println ("externo_y =" + externo_y);
        }
    }
}

class ClaseAndidadaStaticDemo {
    public static void main(String[] args) {

        //Accediendo a la clase anidada estática
        ClaseExterna.ClaseAnidadaStatic objetoAnidado= new ClaseExterna.ClaseAnidadaStatic();
        objetoAnidado.mostrar();

    }
}

Salida:

externo_x: 10
externo_privado: 30
Lectura Recomendada
Clases Internas
Clases Anidadas
  • Clases Anidadas Estáticas

Sobre el Autor:

Hey hola! Yo soy Alex Walton y tengo el placer de compartir conocimientos hacía ti sobre el tema de Programación en Java, desde cero, Online y Gratis.

Deja una Respuesta

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.