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"
- private
- public
- protected
Nenhum comentário:
Postar um comentário