Junior — Middle
Qual é a diferença entre uma classe interna e uma classe aninhada na programação?
sobes.tech IA
Resposta da IA
Em Java (e no Android) uma classe aninhada é qualquer classe declarada dentro de outra classe. As classes aninhadas podem ser de dois tipos:
- Classe aninhada estática (static nested class) — declarada com o modificador
static. Ela não tem acesso direto aos membros não estáticos da classe exterior. - Classe interna (inner class) — classe aninhada sem o modificador
static. Ela está vinculada a uma instância da classe exterior e tem acesso aos seus campos e métodos não estáticos.
Exemplo:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Não é possível acessar outerField diretamente
System.out.println("Classe aninhada estática");
}
}
class Inner {
void print() {
// Pode acessar outerField
System.out.println("Classe interna, outerField = " + outerField);
}
}
}
Portanto, a principal diferença é que a classe interna está vinculada a um objeto da classe exterior e pode acessar seus membros não estáticos, enquanto a classe aninhada estática não está.