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();