Junior
O que são classes aninhadas?
sobes.tech IA
Resposta da IA
As classes aninhadas são classes declaradas dentro de outra classe. Elas dividem-se em dois tipos principais: classes aninhadas estáticas (membros estáticos da classe) e classes internas (membros não estáticos).
Classes aninhadas estáticas:
- Estão relacionadas com a classe externa, não com a sua instância.
- Podem aceder apenas aos membros estáticos da classe externa.
- Podem ser criadas sem uma instância da classe externa.
Classes internas:
- Estão relacionadas com uma instância da classe externa.
- Podem aceder a todos os membros da classe externa (estáticos e não estáticos), incluindo privados.
- Requerem uma instância da classe externa para serem criadas.
Exemplos de uso:
- Agrupamento: Classes logicamente relacionadas podem ser agrupadas para melhorar a legibilidade e organização do código.
- Encapsulamento: As classes internas têm acesso aos membros privados da classe externa, permitindo encapsular detalhes de implementação.
- Ouvintes de eventos (Java): Frequentemente usados para criar classes internas anónimas.
- Classes auxiliares: Pequenas classes usadas apenas pela classe externa.
// Exemplo de classe aninhada estática
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Campo estático externo: " + outerStaticField);
// Não é possível aceder diretamente a outerInstanceField
}
}
}
// Exemplo de classe interna
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Campo externo: " + outerField); // Acesso ao campo da classe externa
}
}
}
Tabela comparativa:
| Característica | Classe aninhada estática | Classe interna |
|---|---|---|
| Relação | Com a classe externa | Com uma instância da classe externa |
| Acesso aos membros externos | Apenas estáticos | Todos os membros (incluindo privados) |
| Requer instância | Não | Sim |
| Pode conter membros estáticos | Sim | Não (exceto constantes) |