logo

Clase interna anónima de Java

La clase interna anónima de Java es una clase interna sin nombre y para la cual solo se crea un objeto. Una clase interna anónima puede ser útil al crear una instancia de un objeto con ciertos 'extras', como sobrecargar métodos de una clase o interfaz, sin tener que subclasificar una clase.

En palabras simples, una clase que no tiene nombre se conoce como clase interna anónima en Java. Debe usarse si tiene que anular un método de clase o interfaz. La clase interna Java Anonymous se puede crear de dos maneras:

  1. Clase (puede ser abstracta o concreta).
  2. Interfaz

Ejemplo de clase interna anónima de Java usando clase

TestAnonymousInner.java

 abstract class Person{ abstract void eat(); } class TestAnonymousInner{ public static void main(String args[]){ Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; p.eat(); } } 
Pruébalo ahora

Producción:

 nice fruits 

Funcionamiento interno del código dado.

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Se crea una clase, pero su nombre lo decide el compilador, que extiende la clase Persona y proporciona la implementación del método eat().
  2. Se crea un objeto de la clase Anónimo al que se hace referencia mediante 'p', una variable de referencia de tipo Persona.

Clase interna generada por el compilador.

 import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } } 

Ejemplo de clase interna anónima de Java usando la interfaz

 interface Eatable{ void eat(); } class TestAnnonymousInner1{ public static void main(String args[]){ Eatable e=new Eatable(){ public void eat(){System.out.println('nice fruits');} }; e.eat(); } } 
Pruébalo ahora

Producción:

 nice fruits 

Funcionamiento interno del código dado.

Realiza dos tareas principales detrás de este código:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Se crea una clase, pero su nombre lo decide el compilador, que implementa la interfaz Eatable y proporciona la implementación del método eat().
  2. Se crea un objeto de la clase Anónimo al que se hace referencia mediante 'p', una variable de referencia del tipo Eatable.

Clase interna generada por el compilador.

 import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }