No último artigo, comentei sobre classes internas comum e de métodos. Finalizarei o assunto com este artigo. Onde estarei falando sobre: classes anônimas simples (em suas duas maneiras), classes anônimas definida no argumento e classes internas estáticas. Vamos lá!


Classes Anônimas Simples

Bom, de cara vamos achar estranho a sintáxe das classes anônimas, pelo fato de ser uma sintáxe não muito comum de se ver, exceto em: Swing, e alguns frameworks como o GWT da google. Segue abaixo um exemplo de como declarar uma classe anônima simples.



Olha ae! Definimos uma classe anônima. Mas, porque Anônima? Bom, como o próprio nome diz, e pelo o que vemos acima, é uma classe que não tem nome e sim uma referência a Car e onde teriamos a criação de um objeto, estamos na verdade definindo uma subclasse de Car, isso mesmo, quando declaramos classes anônimas estamos na verdade criando uma subclasse do tipo do objeto, não da referência. Dentro da classe anônima, pode ser feito qualquer coisa, que for feito em outra classe interna , até mesmo acesso aos seus membros.

Outro local, onde podesse ser empregado esta prática é na criação de implementadores. Exemplo, onde Car poderia ser uma interface, é o único local na linguagem Java, onde daremos um new em um interface. Com relação aos modificadores, segue a regra de qualquer variável local, se declarada em um método. Outra, não esqueção de adicionar o ponto-e-virgula depois da chave de fechamento (causará erro de compilação) e não podem conter membros static.


Classes Anônimas Definidas no Argumento

Das classes definidas no argumento, não tem muito o que se falar, devido a única diferença é a forma de declaração eo local obviamente. Veja.



Percebi, quase igual. Podendo também ser usada com interfaces, não pode ter membros static. Sobre classes anônimas acaba por aqui. Vamos entrar agora nas classes internas estáticas.

Classes Estáticas

As classes estáticas são declaradas fora de qualquer método, já vimos que as classes internas de método só podem ter com modificador (não relacionado a acesso) o final. As classes estáticas diferem das comuns, por não poderem acessar membros de instâncias e a forma de instância-las. Os modificadores são os mesmos da classes interna comum. Abaixo um exemplo da declaração.



Facil! – A maneira de instânciar uma classe estática é um pouco diferente, já que ela não precisa de uma instância de sua classe externa, para ser instanciada. Vejamos:



Para fixar, vou repetir mais uma vez, classes estáticas não tem acesso aos membros de instância da classe externa. E é isso ai, nossos posts sobre classes internas acabam por aqui!

Esse série termina por aqui. Obrigado, até o próximo pessoal!