Alternativa E - Uma classe aninhada é um membro da classe mais externa.
Conceito de Classes Aninhadas
Na Programação Orientada a Objetos (POO) com Java, uma classe aninhada (ou nested class) é aquela declarada inteiramente dentro do corpo de outra classe ou interface.
Essas classes funcionam como membros da classe envolvente (classe externa). Elas podem ser classificadas principalmente em dois grupos:
- Inner Classes (Classes Internas): Não possuem o modificador
static. Têm acesso direto a todos os membros da classe externa, inclusive os privados. - Static Nested Classes: Possuem o modificador
static. Funcionam como membros estáticos e precisam de uma instância da classe externa para acessar seus membros não estáticos (se necessário), mas geralmente operam de forma isolada.
Análise Detalhada das Alternativas
Vamos examinar por que as outras opções estão incorretas:
- Alternativa A: Incorreta. A classe aninhada não é derivada (herdada) da classe externa. Ela possui uma relação de composição/pertença, mas não utiliza o mecanismo de herança (
extends) em relação à sua classe envolvente. - Alternativa B: Incorreta. Não há restrição de que deva estender a classe externa. Uma classe aninhada pode estender qualquer outra classe existente no projeto, respeitando as regras de herança normais do Java.
- Alternativa C: Incorreta. Classes aninhadas são extensíveis, desde que não sejam declaradas como
final. Assim como qualquer outra classe, elas podem servir de base para novas subclasses. - Alternativa D: Incorreta. A visibilidade (modificador de acesso) da classe aninhada é independente da classe externa. Você pode declarar uma classe pública externa com uma classe interna privada, por exemplo.
Conclusão
A alternativa E é a correta porque, na estrutura de classes do Java, classes aninhadas são efetivamente definidas como membros de classe. Elas residem no escopo da classe pai, compartilhando seu nome de espaço (namespace) e podendo ser referenciadas usando a sintaxe ClasseExterna.ClasseInterna.