O documento discute classes aninhadas em Java, incluindo classes internas, locais e anônimas. Apresenta exemplos de como declarar classes internas públicas ou privadas dentro de outra classe, e como objetos internos podem acessar membros da classe externa. Também mostra como declarar classes locais dentro de métodos e usar classes anônimas.
3. public class Externa {
private String texto = "texto externo";
public class Interna{
private String texto = "texto interno";
public void imprimeTexto(){
System.out.println(texto);
}
}
}
4. public class Externa {
private String texto = "texto externo";
public class Interna{
private String texto = "texto interno";
public void imprimeTexto(){
System.out.println(texto);
//consegue ver membros da classe externa
System.out.println(Externa.this.texto);
}
}
}
5. public class Externa {
private String texto = "texto externo";
public class Interna{
private String texto = "texto interno";
public void imprimeTexto(){
System.out.println(texto);
//consegue ver membros da classe externa
System.out.println(Externa.this.texto);
}
}
public static void main(String[] args){
Externa externa = new Externa();
Interna interna = externa.new Interna();
interna.imprimeTexto();
}
}
8. public class Externa2 {
public void metodoQualquer(){
class ClasseLocal{
private String texto = "texto classe local";
public void imprimeTexto(){
System.out.println(texto);
}
}
}
}
9. public class Externa2 {
public void metodoQualquer(){
class ClasseLocal{
private String texto = "texto classe local";
public void imprimeTexto(){
System.out.println(texto);
}
}
ClasseLocal local = new ClasseLocal();
local.imprimeTexto();
}
}
10. public class Externa2 {
public void metodoQualquer(){
class ClasseLocal{
private String texto = "texto classe local";
public void imprimeTexto(){
System.out.println(texto);
}
}
ClasseLocal local = new ClasseLocal();
local.imprimeTexto();
}
public static void main(String[] args){
Externa2 externa = new Externa2();
externa.metodoQualquer();
}
}
12. public class Anonima {
public void imprimeTexto(){
System.out.println("qualquer texto");
}
public static void main(String[] args){
Anonima anonima = new Anonima(){
public void imprimeTexto(){
System.out.println("qualquer texto que foi sobrescrito");
}
};
}
}
13. public interface Texto {
void imprimeTexto();
}
//usando interface
Texto texto = new Texto() {
@Override
public void imprimeTexto() {
System.out.println("qualquer texto - interface");
}
};
texto.imprimeTexto();
16. Exemplos reais
•Classes que serão utilizadas somente dentro da
classe "externa"
•Hibernate/JPA (chave primária composta)
17. Exemplos reais
•Classes que serão utilizadas somente dentro da
classe "externa"
•Hibernate/JPA (chave primária composta)
•Swing (actions)
18. Exemplos reais
•Classes que serão utilizadas somente dentro da
classe "externa"
•Hibernate/JPA (chave primária composta)
•Swing (actions)
•Collections (comparar objetos, entre outros)