E aí galera!!
Procurei esclarecer uma dúvida, porém, ñ consegui.
Para que serve uma Classe Interna??
Por favor me expliquem c/ detalhes.
Abs.
Classe Interna
5 Respostas
É uma classe que é definida dentro de um arquivo classe.
1º As classes internas são invisiveis a todas as outras classes, o que significa que você não precisa se preocupar com conflitos de nome entre elas e outras classes. 
2ºAs classes internas podem ter acesso a variáveis e métodos dentro do escopo de uma classe de alto nível que elas não teriam como uma clase separada. 8)
Um exemplo:
public class ArquivoClasse{
public ArquivoClasse(){ } //Contrutor
class ClasseInterna(){} //Classe interna
public static void main(String[] argumentos){} // parte mãe do program
}//fim da classe ArquivoClasse
Obs: Espero ter ajudado no entendimento de Class interna
Um exemplo real do uso de classes internas é quando você quer implementar uma interface, sem violar o encapsulamento de sua classe.
Veja esse exemplo:
Outra vantagem é, como o colega falou, ocultar classes que só fazem sentido associadas a classe principal. Por exemplo, suponha que você vá fazer uma classe ListaEncadeada. Toda lista encadeada é um conjunto de nós, mas o nó só tem sentido para a classe da lista. Então, porque deixar o nó publico? A classe No poderia ser uma classe interna privada da lista.
Olá bit_and_bit, bem vindo ao GUJ! Vi que você postou um código fonte no seu post, mas com certeza você não leu esse tópico antes:
http://www.guj.com.br/posts/list/50115.java
Dê uma lida o mais rápido possível, ok? :thumbup:
Acho que você quis dizer “É uma que é classe definida dentro de uma outra classe”.
Cuidado com esse termo invisível, pois dá a impressão de que a classe interna em questão não pode ser “enxergada” pelas demais, ou seja, se outras classes podem criar referências e objetos do tipo dessa classe interna, o que é perfeitamente possível. Creio que o que você quis dizer é que o nome completo de uma classe interna inclui também o nome da classe que a contém. Por exemplo:
package br.com.guj;
public class Outer{
//...
public class Inner{
//...
}
//...
}
package br.com.guj;
public class Inner{
//...
}
Temos aí 3 classes distintas:
:arrow: br.com.guj.Outer
:arrow: br.com.guj.Outer.Inner
:arrow: br.com.guj.Inner
Então, como você mencionou, não haverá conflito de nomes, pois como eu disse, ao nome completo da classe interna é adicionado o nome da classe que a contém, como se esta fosse também um pacote.
package br.com.guj; public class Outer{ //... public class Inner{ //... } //... }package br.com.guj; public class Inner{ //... }Temos aí 3 classes distintas:
:arrow: br.com.guj.Outer
:arrow: br.com.guj.Outer.Inner
:arrow: br.com.guj.Inner
Então, como você mencionou, não haverá conflito de nomes, pois como eu disse, ao nome completo da classe interna é adicionado o nome da classe que a contém, como se esta fosse também um pacote.
Apenas complementando, br.com.guj.Outer.Inner só pode ser usada através de uma instância de br.com.guj.Outer, a menos que seja declarada como estática.
Obrigado à todos.
E a classe interna anônima, qual é a sua funcionalidade e necessaidade?
Exemplo: usa-se muito em Tratamento de Eventos.
Valw. :?: