Middle
¿Qué son las clases anidadas?
sobes.tech AI
Respuesta de la IA
Una clase anidada es una clase definida dentro de otra clase.
Tipos de clases anidadas en Java:
-
Clases anidadas estáticas (Static Nested Classes):
- Accesibles desde la clase externa sin su instancia.
- No tienen acceso directo a los campos y métodos no estáticos de la clase externa.
- Se declaran con la palabra clave
static.
-
Clases internas (Inner Classes):
- Clases internas miembro (Member Inner Classes):
- Se declaran a nivel de miembros de la clase externa.
- Tienen acceso a todos los miembros de la clase externa (incluidos los privados).
- Requieren una instancia de la clase externa para crear su instancia.
- Clases internas locales (Local Inner Classes):
- Se definen dentro de un método, constructor o bloque de inicialización.
- Solo son visibles dentro de ese método/bloque.
- Tienen acceso a variables locales finales o efectivamente finales del contexto externo.
- Clases internas anónimas (Anonymous Inner Classes):
- Clases sin nombre.
- Se usan para crear objetos que implementan una interfaz o extienden una clase de inmediato.
- Se definen y se instancian en una sola operación.
- Clases internas miembro (Member Inner Classes):
Ejemplo de clase anidada estática:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Puede acceder a miembros estáticos de la clase externa
System.out.println(msg);
}
}
}
// Uso
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Ejemplo de clase interna miembro:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Puede acceder a todos los miembros de la clase externa
System.out.println(msg);
}
}
}
// Uso
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
Ventajas del uso de clases anidadas:
- Agrupación: Las clases relacionadas lógicamente pueden agruparse.
- Encapsulación: Las clases internas pueden acceder a los miembros privados de la clase externa, mejorando la encapsulación.
- Legibilidad y mantenibilidad: Ocultan clases auxiliares dentro de la clase principal.
- Eficiencia: Pueden usarse para crear estructuras de datos más compactas y eficientes.