Las clases anónimas
representan el caso de clases internas mas extraño que se puede presentar.
Una clase anónima
es una clase sin nombre, definida en la misma línea de código donde se crea el
objeto de la clase. Esta operación se lleva a cabo en el interior de un método de
otra clase, por ello la clase anónima es considerada como una clase interna
anidada.
DEFINICION
DE UNA CLASE ANONIMA
Una clase anónima
siempre debe ser una subclase de otra clase existente o bien de implementar
alguna interfaz. La sintaxis para la definición de una clase de este tipo será:
Superclase
var= new Superclase(){
//Definición
de la clase anónima
}
Donde var será
la variable que almacene la instancia de la clase anónima, que una subclase de
Superclase.
Como se
puede observar, la definición de la clase anónima y la creación de una
instancia de la misma representa acciones inseparables que se realizan en la
misma línea de código.
Ejemplo
Class Externa
{
}
Ejemplo
public class Operaciones {
public void imprimir(){
System.out.println("imprimir
original");
}
}
public class
Externa {
Operaciones op = new Operaciones(){
// definición de la clase anonima
public void imprimir(){
System.out.println("Imprimir
anonimma");
}
};// creación del objeto termina con ;
void proceso(){
op.imprimir();
}
De este
ejemplo se deducen dos cosas importantes: en primer lugar, la variable op
contiene una instancia del objeto de la clase anónima, no de la clase
Operaciones. En segundo lugar, dado que la definición de la clase anónima se
lleva a cabo en una línea a código, esta debe terminar con ; .
Citado de el libro Programador
Certificado de Java 2 Curso practico 2ª Edición.
Autor Antonio Martin Sierra
y cual es el beneficio? de usarlas o en que caso conviene usarla?
ResponderEliminarYo las usaria para los Enum por ejemplo o definir un evento para AWT o SWING!!
EliminarTambién las usaria para ahorrar lineas de codigo.
EliminarHola, no veo la diferencia entre crear una clase anonima o crear un objeto de la clase operaciones. me explican ? Que pasa si quiero crear un objeto de tipo Operaciones ? no serìa el mismo codigo que el de crear una clase anonima como dice el ejemplo ?
ResponderEliminarno, para crear de la clase operaciones, solo es.... operación op = new operaciones(); y te lo define como el de la clase de arriba, la primera, pero al hacer la anónima, se creo una clase completamente diferente, la sintaxis como explica es la siguiente... operación op = new operaciones(){ "y aquí defines la clase"}. espero te haya servido de algo, la clase anónima se define al momento de instanciaral, y no como las otras que se definen en otra clase o en otra parte del código
EliminarSOS UN CAPO, OSEA QUE LA UNICA DIFERENCIA ES QUE EN LA ANONIMA TENGO QUE PONER LAS LLAVES Y AHI DENTRO DEFINIR SUS ATRIBUTOS, METODOS, ETC ? graciasss
EliminarPodrían colocar un ejemplo más claro?
ResponderEliminarAquí encontraras un ejemplo más claro, por lo que veo se entiende más si en lugar de crear una clase anónima a partir de una clase normal lo hace a partir de una interfaz.
ResponderEliminarhttps://www.oracle.com/technetwork/es/articles/java/expresiones-lambda-api-stream-java-2633852-esa.html
Bien explicado, muchas gracias.
ResponderEliminar