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:
-
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 // } } } -
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.