sexta-feira, 14 de dezembro de 2012

O que é uma "inner class"?

"Inner class" é uma classe que é inserida dentro de outra classe, denominada "outer class". Vamos ver um exemplo

Note que temos uma classe definida dentro de ClasseExterna. Um objeto desta classe é instanciado dentro do método apresentaStrings() e com isto conseguimos obter como saídas as duas strings.


Você deu uma olhada nos arquivos que são gerados pelo javac?


A classe interna pode ser referenciada pela classe externa, porém fica encapsulada dentro dela. Os arquivos bytecode começam com o nome da classe ClasseExterna.

Existem duas variações para classe interna:
  • você pode declarar a classe interna dentro do corpo de um método e neste caso temos o que chamamos de "local inner class"; ou
  • você pode declarar a classe interna dentro do corpo do método (semelhante ao modelo anterior), só que sem nomear esta classe interna. Neste caso temos o que chamamos "anonymous inner class"
Uma classe interna pode receber os modificadores:
  • private
  • public
  • protected
de acordo com o tipo de restrição de acesso que você deseja para a classe interna da mesma forma que você faria para qualquer outra classe.

Nenhum comentário:

Postar um comentário