São utilizadas para limitar o escopo onde a classe aninhada pode ser utilizada
- O tipo da classe altera o contexto onde ela é usada:
- se for
static
estará no contexto estático da classe-pai - se for membro (não-estática) da classe-pai, estará associada com as instâncias da classe-pai
- se estiver dentro de um método, estará associada ao contexto do método
- Classes aninhadas
public
,protected
edefault
são visÃveis por classes externas; classesprivate
, não
Â

Anonymous Inner Classes
Recomendada quando é preciso substituir ou estender poucos comportamentos de uma classe
- É a implementação de uma interface ou extensão de uma classe, sem a necessidade de declarar uma classe comum
- como uma classe aninhada anônima gera instância no momento da declaração, é possÃvel implementar uma interface
public interface Order {...} Order order = new Order() { // implementação dos métodos ... }
- É implementada em linha e retorna uma instância no momento da declaração
- Métodos, variáveis e parâmetros fora do seu escopo próprio são acessÃveis apenas se forem
final
ou effective final

