Sobes.tech
Junior

O que são classes aninhadas?

sobes.tech IA

Resposta da IA

As classes aninhadas (Nested Classes) são classes definidas dentro de outra classe. Elas dividem-se em dois tipos principais:

  1. Classes aninhadas estáticas (Static Nested Classes): Semelhantes aos membros estáticos da classe externa. Não têm acesso direto aos membros não estáticos da classe externa. São criadas sem uma instância da classe externa.

    Exemplo em Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // Acesso a membro estático de OuterClass
                int value = OuterClass.outerStaticField;
            }
    
            // Não tem acesso direto a outerInstanceField
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Erro de compilação
            // }
        }
    }
    
  2. Classes internas (Inner Classes): Não estáticas. Têm acesso a todos os membros da classe externa, incluindo os estáticos e não estáticos, mesmo os privados. A instância da classe interna está vinculada a uma instância da classe externa. São criadas usando uma instância da classe externa.

    Exemplo em Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // Acesso a membros estáticos e não estáticos de OuterClass
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Existem também tipos específicos de classes internas:

  • Clases locales (Local Classes): Definidas dentro de um bloco (por exemplo, método, construtor ou bloco de inicialização). Acessíveis apenas dentro desse bloco.
  • Clases anônimas (Anonymous Classes): Não têm nome. Usadas para criar implementações únicas de interfaces ou extensões de classes. São definidas e instanciadas ao mesmo tempo.

Vantagens das classes aninhadas:

  • Agrupamento lógico: Permitem agrupar classes relacionadas logicamente, melhorando a legibilidade do código.
  • Encapsulamento: Podem acessar membros privados da classe externa, proporcionando uma encapsulação mais forte.
  • Código mais simples: Facilitam a escrita de código para classes usadas apenas por outra classe.

Aplicação em QA Automation:

  • Page Object Model: As classes internas ou estáticas podem ser usadas para organizar elementos da página (por exemplo, seções, janelas modais) dentro da classe principal Page Object.
  • Manipuladores de eventos / Callbacks: As classes anônimas ou locais podem ser usadas para implementar testes usando callbacks ou manipuladores de eventos, por exemplo, ao trabalhar com elementos UI ou ouvintes.
  • Classes de configuração: As classes aninhadas estáticas podem conter constantes ou parâmetros de configuração específicos para a classe externa.