Em Java, uma classe pode ser definida dentro de outra classe?

0
84

Sim, em Java, uma classe pode ser definida dentro de outra classe. Essas classes são conhecidas como classes internas ou classes aninhadas.

Existem quatro tipos principais de classes internas em Java:

☕ Classe Interna Regular (Inner Class)

É uma classe definida dentro de outra classe. Ela pode ter acesso aos membros da classe externa, incluindo campos privados. As classes internas são frequentemente usadas quando a classe interna tem uma relação forte com a classe externa.

Neste exemplo, temos uma classe Carro com uma classe interna Motor:

☕ Classe Anônima (Anonymous Class)

Classe anônima (Anonymous Class) é um conceito em Java que permite criar uma classe sem nome (ou seja, sem declarar explicitamente um nome de classe) e instanciá-la ao mesmo tempo, geralmente para fornecer uma implementação rápida e ad hoc de uma interface ou classe abstrata. Isso é útil quando você precisa criar uma classe que será usada apenas uma vez e não deseja criar uma classe separada para ela.

A designação “anônima” refere-se ao fato de que, ao escrever o código, você não precisa escolher um nome para essa classe, porque o compilador cuida disso internamente.

Neste exemplo, usamos uma classe anônima para criar uma implementação rápida de uma interface:

☕ Classe Estática Aninhada (Static Nested Class)

É uma classe interna que é declarada como estática. Isso significa que ela não tem acesso direto aos membros não estáticos da classe externa. As classes estáticas aninhadas são frequentemente usadas para melhorar a organização do código.

Exemplo:

☕ Classe Interna Local (Local Inner Class)

É uma classe definida dentro de um método ou bloco de código. Ela só é visível dentro do escopo onde foi definida.

Neste exemplo, temos uma classe interna local definida dentro de um método:

📅 Tabela Comparativa de Tipos de Classes Internas em Java

Tipo de Classe Interna Visibilidade a membros da Classe Externa Necessidade de Instância da Classe Externa Aplicação Comum
Classe Interna Regular Sim Sim Relações fortes entre a Classe Externa e a Classe Interna, como Listeners e Comportamentos específicos.
Classe Anônima Não Não Implementações ad hoc de interfaces e classes abstratas.
Classe Estática Aninhada Sim Não Melhorar a organização de código, quando a classe interna não precisa de acesso aos membros não estáticos da Classe Externa.
Classe Interna Local Sim Sim Encapsular funcionalidades específicas de um método ou bloco de código.

*Atualizado em 30 de setembro de 2023

Estude a Bíblia!
Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments