Sobes.tech
Junior — Middle

¿Cuál es la diferencia entre una clase interna y una clase anidada en programación?

sobes.tech AI

Respuesta de la IA

En Java (y en Android) una clase anidada es cualquier clase declarada dentro de otra clase. Las clases anidadas son de dos tipos:

  1. Clase anidada estática (static nested class) — declarada con el modificador static. No tiene acceso directo a los miembros no estáticos de la clase exterior.
  2. Clase interna (inner class) — clase anidada sin el modificador static. Está vinculada a una instancia de la clase exterior y tiene acceso a sus campos y métodos no estáticos.

Ejemplo:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // No se puede acceder directamente a outerField
            System.out.println("Clase anidada estática");
        }
    }

    class Inner {
        void print() {
            // Se puede acceder a outerField
            System.out.println("Clase interna, outerField = " + outerField);
        }
    }
}

Por lo tanto, la principal diferencia es que la clase interna está vinculada a un objeto de la clase exterior y puede acceder a sus miembros no estáticos, mientras que la clase anidada estática no lo está.