Classe interna
Em sistemas reais, muitas vezes uma classe só faz sentido dentro de outra — como uma transação dentro de uma conta bancária. A classe interna (inner class) permite agrupar logicamente essas entidades, melhorando a encapsulação e reduzindo a poluição de nomes. Em frameworks como Swing e JavaFX, listeners são frequentemente implementados como classes internas anônimas ou regulares.
O PROBLEMA
Banco com classe interna Conta. Gerencie contas.
EXEMPLO
Banco.Conta conta = banco.new Conta()
SOBRE O CONCEITO
Uma classe interna em Java é declarada dentro de outra classe e tem acesso aos membros (inclusive privados) da classe externa. Para instanciar uma classe interna, é necessário ter uma referência à classe externa, por exemplo: Banco.Conta conta = banco.new Conta(). O erro comum é tentar criar a classe interna sem essa referência externa, como new Conta() fora do contexto de um objeto Banco — isso falha porque a classe interna depende de uma instância da externa para acessar seus atributos e métodos. A classe interna também mantém uma referência implícita à instância externa, o que pode causar memory leaks se não for tratado com cuidado. Use static class para evitar essa dependência, mas isso é proibido aqui por questão didática.
RESOLUÇÃO