Sobes.tech
Middle

O que são classes aninhadas e como elas são aplicadas na programação?

sobes.tech IA

Resposta da IA

As classes aninhadas são classes declaradas dentro de outra classe. Elas permitem agrupar logicamente classes que são usadas apenas em um lugar, aumentam a encapsulação e tornam o código mais legível.

As classes aninhadas são:

  • Estáticas (Classes Aninhadas Estáticas): Não têm acesso aos membros não estáticos da classe externa. Podem ser criadas sem uma instância da classe externa.
  • Não estáticas (Classes Internas): Têm acesso a todos os membros da classe externa (incluindo privados). Para criar uma instância de uma classe interna não estática, é necessária uma instância da classe externa.

Aplicações:

  • Ocultar implementação: A classe aninhada pode ser usada como uma classe auxiliar, cujos detalhes de implementação não devem ser acessíveis de fora.
  • Agrupamento: União lógica de classes estreitamente relacionadas.
  • Implementação de callbacks / ouvintes: Frequentemente usada para criar classes internas anônimas para implementar interfaces ou classes abstratas.
  • Iteradores: A classe interna é conveniente para implementar um iterador, pois tem acesso ao estado interno da coleção.

Exemplo (Java):

class OuterClass {
    private int outerField;

    // Classe aninhada estática
    static class StaticNestedClass {
        void print() {
            // Não tem acesso a outerField
            System.out.println("De StaticNestedClass");
        }
    }

    // Classe interna não estática
    class InnerClass {
        void print() {
            // Tem acesso a outerField
            System.out.println("outerField: " + outerField);
        }
    }
}
// Criando uma instância da classe aninhada estática
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// Criando uma instância da classe interna
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();