As classes anônimas permitem que você escreva um pequeno código e declare e instancie a classe ao mesmo tempo. Essas classes não têm nomes, é usado quando você deseja usar qualquer classe apenas uma vez. É um aspecto importante da programação Java. Vamos entender o que é classe anônima em Java na seguinte ordem:
- Declaração de classes anônimas
- Sintaxe de classe anônima em Java
- Maneiras de criar classe anônima em Java
- Diferença entre classe regular e anônima
Declaração de classes anônimas
Normalmente criamos uma classe, ou seja, declaramos classe, mas classes anônimas são expressões que significa que definimos a classe anônima em outro expressão . Em palavras simples, a classe interna anônima é uma classe sem nomes e apenas um objeto é criado.
Classe anônima é útil quando temos que criar uma instância do objeto com métodos de sobrecarga de uma classe ou interface sem criar uma subclasse de classe.
O anônimo pode ser criado de duas maneiras:
- Classe (também pode ser abstrato)
- Interface
Na classe anônima, podemos declarar o seguinte:
chef vs fantoche vs sal
- Campos
- Métodos extras
- Inicializadores de instância
- Aulas locais
Sintaxe de classe anônima em Java
A sintaxe de uma classe anônima é semelhante ao construtor, exceto que há uma definição de classe no bloco, conforme mostrado no snippet abaixo:
// AnonymousClass = interface, classe abstrata / concreta. AnonymousClass t = new AnonymousClass () {// métodos e campos public void someMethod () {// o código vai aqui}}
Vejamos o seguinte exemplo:
O exemplo a seguir,HelloAnonymousClass
, usa classes anônimas nas instruções de inicialização das variáveis locaiscumprimentar alguém
mas, usa uma classe local para a inicialização da variávelgreetWorld
:
public class HelloAnonymousClass {interface HelloWorld {public void sayHello () public void sayHelloTo (String alguém)} public void sayHello () {class GreetWorld implementa HelloWorld {String name = 'world' public void sayHello () {sayHelloTo ('world')} public void sayHelloTo (String alguém) {name = someone System.out.println ('Hello' + name)}} HelloWorld greetWorld = new GreetWorld () HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} public void sayHelloTo (String alguém) {name = alguém System.out.println ('hola' + name)}} greetWorld.sayHello () greetSomeone.sayHelloTo ('Doe')} public static void main (String ... args) {HelloAnonymousClass myApp = new HelloAnonymousClass () myApp.sayHello ()}}
Como vimos, a classe anônima é uma expressão, a sintaxe é como o construtor, exceto que há uma definição de classe no bloco. Considere a instanciação do objeto greetSomeone:
HelloWorld greetSomeone = new HelloWorld () {String nome = 'jon' public void sayHello () {sayHelloTo ('Jon')} public void sayHelloTo (String alguém) {nome = alguém System.out.println ('hola' + nome) }}
A classe anônima é composta do seguinte:
programa de agendamento round robin em c
- novo operador.
- Ele pode implementar uma interface ou estender uma classe. Como no exemplo acima, ele está implementando a interface.
- Ele contém parênteses como classes normais para passar argumentos para o construtor.
- Contém corpo que contém declarações de método. Declarações não são permitidas.
A classe anônima deve fazer parte das declarações.
No exemplo acima, a expressão de classe anônima é parte da instrução que é iniciada porcumprimentar alguém
.
Maneiras de criar classe anônima em Java
Existem 3 maneiras de criar Inner Class em Java
- Ao estender a classe
Podemos criar uma classe interna anônima estendendo outra classe, suponha que tenhamos que criar um thread usando a classe Thread, podemos criar uma classe interna anônima em vez de criar uma classe separada.
// Programa para ilustrar a classe Anonymous Inner estendendo outra classe de classe AnonymousThreadClass {public static void main (String [] args) {// Classe Anonymous Inner que estende a classe Thread Thread t = new Thread () {public void run () {System .out.println ('Filho!')}} t.start () System.out.println ('Pai!')}}
Resultado:
Pai!
Criança!
- Implementando Interface
Também podemos criar uma classe interna anônima implementando a interface. Agora, como criamos uma classe interna estendendo a classe de maneira semelhante, podemos criar uma classe que implementa uma interface.
// Programa para ilustrar a classe Anonymous Inner implementando a classe de interface AnonymousThreadClass {public static void main (String [] args) {// Classe Anonymous Inner que implementa a interface Runnable r = new Runnable () {public void run () {System.out .println ('Child!')}} Thread t = new Thread (r) t.start () System.out.println ('Parent!')}}
Resultado:
Pai!
Criança!
- Como um argumento para um Método / Construtor
Para entender a sintaxe, vejamos o exemplo abaixo:
// Programa para ilustrar a classe Anonymous Inner por classe de argumento AnonymousThreadClass {public static void main (String [] args) {// Classe anônima com argumento do construtor Thread t = new Thread (new Runnable () {public void run () {System. out.println ('Filho!')}}) t.start () System.out.println ('Pai!')}}
Resultado:
Pai!
Criança!
Diferença entre classe interna regular e anônima
Podemos implementar vários números de interfaces usando uma classe normal, mas, com uma classe interna anônima, podemos implementar apenas uma interface.
Com aulas regulares podemos estender uma aula e também implementar várias interfaces, mas, com uma classe interna anônima, podemos estender uma classe ou implementar uma interface, mas não as duas ao mesmo tempo.
obter a data da string java
Com anônimos nós não posso escrever construtor porque a classe interna anônima não tem nome e o nome do construtor deve ser igual ao nome da classe.
Neste artigo, vimos o que é uma classe interna anônima e como podemos criar uma. examinamos a sintaxe da classe interna anônima e também como podemos criar uma classe anônima de 3 maneiras e, com isso, chegamos ao fim deste artigo Classe anônima em Java. Confira o por Edureka.
Tem uma questão? Mencione-o na seção de comentários deste artigo e entraremos em contato com você o mais breve possível.