Classes Internas e Anônimas

Inner class (Classe Interna) e anonymous class (Classe Anônima) são recursos do Java que permitem criar classes dentro de outras classes. Essas classes são úteis para encapsular código e tornar o código mais modular. Eles são particularmente úteis em situações em que uma classe é usada apenas em um contexto específico e não faz sentido ter essa classe como uma classe separada.

Inner Class

Uma inner class é uma classe definida dentro de outra classe, e pode ter acesso aos membros da classe externa. É possível definir inner classes estáticas, que não têm acesso aos membros da classe externa.

Um exemplo de inner class:

public class OuterClass {
    private int x = 10;

    class InnerClass {
        public void printX() {
            System.out.println(x); // imprime o valor 10
        }
    }
}

Neste exemplo, a classe InnerClass é uma inner class da classe OuterClass e tem acesso ao campo x da classe externa.

Anonymous Class

Já uma anonymous class é uma classe sem nome que é definida e instanciada ao mesmo tempo. É uma forma conveniente de criar uma classe para implementar uma interface ou uma classe abstrata. Um exemplo de anonymous class que implementa a interface DoSomething:

public class Executor{
    private int x = 10;
    public void execute(){
        DoSomething doSomething = new DoSomething() {
            public void do() {
                System.out.println(x);
            }
        };
        doSomething.do(); // imprime o valor 10
    }
}

public interface DoSomething {
    void do();
}

Neste exemplo, a classe implementa a interface DoSomething e é definida e instanciada ao mesmo tempo. Dessa forma, a variável doSomething, ao chamar o método do() executa a sua implementação única.

Last updated