domingo, 16 de marzo de 2014

CLASE ANONIMA


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

9 comentarios:

  1. y cual es el beneficio? de usarlas o en que caso conviene usarla?

    ResponderEliminar
    Respuestas
    1. Yo las usaria para los Enum por ejemplo o definir un evento para AWT o SWING!!

      Eliminar
    2. También las usaria para ahorrar lineas de codigo.

      Eliminar
  2. Hola, 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 ?

    ResponderEliminar
    Respuestas
    1. no, 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

      Eliminar
    2. SOS 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

      Eliminar
  3. Podrían colocar un ejemplo más claro?

    ResponderEliminar
  4. Aquí 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.
    https://www.oracle.com/technetwork/es/articles/java/expresiones-lambda-api-stream-java-2633852-esa.html

    ResponderEliminar