No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
5 Hrs
48 Min
13 Seg
Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Clases Anónimas

28/38
Recursos

Las Clases Anónimas son una forma de instanciar clases abstractas sin necesidad de usar sus clases hijas. Pero este tipo de instanciación tiene algunas restricciones: el ciclo de vida de estas instancias NO es duradero, no las tendremos disponibles durante toda la ejecución del programa.

// Clase Abstracta:
public abstract class Figura {
  abstract void dibujar();
}

// Clase Anónima:
User user = new User() {
  @Override
  public void showDataUser() {
    // Instrucciones...
  }
};

Aportes 51

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Java hace 1 hora: las clases son como moldecitos para crear objetos, solo debemos instanciarlas…
Java hace 30 minutos: bueno, también existen las clases con métodos estáticos, estas funciones se pueden llamar/ejecutar sin necesidad de instanciar las clases…
Java hace 10 minutos: bueno, también existen las clases abstractas, son clases que nunca instanciamos pero que nos permiten definir métodos opcionales u obligatorios de implementar en las clases que hereden de ellas…
Java Ahora: bueno, también existen las clases anónimas, son un “hack” para instanciar clases abstractas…

😳😳😳😳😂

Así me esta dejando Java 😂

si no me gustase tanto Java y el hecho de la capacidad que nos da de realizar cosas increibles, ya hubiese renunciado a este curso, el nivel de complejidad aumenta pero el nivel de amor incrementa, definitivamente debe ser asi.

Java esta cañon, jaja muchos temas! aiuraaa

Hola parece ser que en la sección de recursos se ha colocado mal el ejemplo de la clase abstracta esto podría causar confusión

// Clase Abstracta:
public abstract class Figura {
  abstract void dibujar();
}

En lugar de esta sería

// Clase Abstracta:
public abstract class User {
  abstract void showDataUser();
}

me va a explotar la cabeza :p

En android existen muchas funciones anonimas, principalmente para dictar el comportamiento de los eventos en la pantalla

Termina siendo super complejo java, me encanto, hay muchas maneras de hacer todo


Java por fuera se ve como un monstruo por dentro es un amor…

Esta interesante la clase, pero no sé porque termine más confundido con esto de las clases anónimas

Este es el momento en el que me cuestiono de haber hecho una buena elección al elegir estudiar

} con ;…¿Por qué?

📦 Una clase anónima nos permite instanciar clases abstractas, con restricciones.

Clases Anónimas
Las clases anónimas son un “hack” para poder instanciar clases abstractas, sin embargo tiene algunas restricciones, una de ellas es que el ciclo de vida de la instancia va a ser muy corto. Las clases anónimas son similares a las clases abstractas.


<h4>Aplicación</h4>
User user1 = new User("Juan","[email protected]") {
    @Override
    public void showDataUser() {
        System.out.println("Doctor");
        System.out.println("Hospital: ISSSTE");
        System.out.println("Departamento: Psicología");
    }
};

Lo que se hace es llamar al método abstracto que es obligatorio implementar y ahí mismo se le da el comportamiento que se necesite, pero solo estará vigente en esa clase.

La forma de llamar el método con el objeto que se creo es:

user1.showDataUser();

Una de las aplicaciones más usadas para las clases anónimas es para darle a un objeto de la interfaz de Android la característica de onClick, para que tenga un comportamiento cuando sea clickeado.

También es posible crear clases anónimas con interfaces e implementar igualmente los métodos de esta, se realiza de la misma manera.

Creo que el curso tiene una complejidad manejable, el problema es que a Anahi se le salio de las manos, se perdio en los ejemplos y ya no supo explicar. Ella sabe mucho, pero no sabe explicar. Posiblemente no se preparo lo suficiente

A como lo entiendo es que una Clase Anónima nos ayuda a darle un comportamiento diferente a un objeto específico de esta clase, mientras los demás objetos que se puedan crear de esta misma clase se comporten de la misma manera.

Además de esta aplicación también nos ayudan a poder instanciar clases abstractas.

¿Se pueden instanciar clases abstractas?

  • Sí se puede, pero no se puede.

¿Alguien sabe tal vez otro ejemplo mas claro de clases anónimas? 😃 😃

Nooooooooo 😮

Tantas cosas xD.

Estoy confundido con las clases anónimas.

Creo que este video me costo un poco, es bastante complejo pero me gusta bastante

No entendí muy bien :C … si estamos hablando de clases anónimas porque los ejemplos es instanciar, entonces son objetos, por consiguiente no debería ser objetos anónimos?

Clases Anónimas: van de la mano con las clases abstractas, es una forma de instanciar una clases abstracta de manera anónima.

Buenas , una pregunta en que caso se podría usar la clase anonima

Las clases anónimas son super buenas cuando se hacen aplicaciones móviles

profe me dejo loco pero lo vere de nuevo
Bueno, según entiendo las clases anónimas son una forma de instanciar tanto clases normales, clases abstractas e interfaces. Nos permite definir e instanciar una clase o interfaz en el mismo lugar donde la necesitemos. Por ejemplo una clase normal se instancia de la siguiente manera: `Doctor doctor = new Doctor();` y la clase anónima se instanciaría de la siguiente forma: `Doctor doctor = new Doctor(){` `//En este bloque de código podemos sobrescribir los métodos de nuestras clases e interfaces` `};`
Creo que lo mejor que pude hacer fue complementar mi semestre Java SE POO de mi universidad con estos cursos. 💀🔫

¿Para qué sirven las clases anónimas?

Las clases anónimas en Java son útiles principalmente cuando necesitas una implementación de una interfaz o una clase abstracta en un contexto específico y no tienes la necesidad o el deseo de crear una clase separada para esa implementación. Aquí hay algunas situaciones comunes en las que las clases anónimas son útiles:

  1. Eventos y Listeners: En la programación de interfaces gráficas (GUI), a menudo necesitas definir listeners para manejar eventos como clics de botón, cambios en selecciones, etc. Las clases anónimas proporcionan una forma rápida y concisa de implementar estos listeners sin la necesidad de crear clases separadas para cada uno.
  2. Implementación de Interfaces Funcionales: Desde Java 8, con la introducción de las expresiones lambda y las interfaces funcionales, las clases anónimas son menos comunes para implementar interfaces funcionales. Sin embargo, todavía pueden ser útiles en casos donde la lógica es más compleja o no se adapta bien a una expresión lambda.
  3. Hilos y Tareas Asíncronas: Cuando se crean hilos o tareas asíncronas, a menudo se necesita implementar la interfaz Runnable. Las clases anónimas pueden ser útiles aquí para proporcionar la implementación de run() directamente en el lugar donde se crea el hilo.
  4. Callback Functions: En ciertas situaciones, especialmente en frameworks y bibliotecas, se pueden requerir callback functions para manejar eventos específicos o completar tareas. Las clases anónimas son útiles para proporcionar estas funciones de devolución de llamada de manera rápida y en el lugar.

En resumen, las clases anónimas en Java son una herramienta útil para crear implementaciones de interfaces o clases abstractas en el lugar donde se necesitan sin tener que definir una clase separada. Ayudan a escribir código más conciso y legible, especialmente en situaciones donde la implementación es simple y específica del contexto.

Aplicaciones prácticas de clases abstractas anónimas

Ejemplo 1: Eventos y Listeners

Supongamos que tienes un botón en una interfaz gráfica y quieres manejar su evento de clic. Puedes usar una clase anónima para implementar el ActionListener directamente en el lugar donde se agrega el listener al botón:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main {
    public static void main(String[] args) {
        JButton button = new JButton("Haz clic aquí");

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("¡El botón fue clickeado!");
            }
        });

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(button);
        frame.pack();
        frame.setVisible(true);
    }
}

Ejemplo 2: Implementación de Interfaces Funcionales

Supongamos que tienes una interfaz funcional Operacion que representa una operación matemática y quieres realizar una operación específica:

public interface Operacion {
    double ejecutar(double a, double b);
}

public class Main {
    public static void main(String[] args) {
        Operacion suma = new Operacion() {
            @Override
            public double ejecutar(double a, double b) {
                return a + b;
            }
        };

        System.out.println("Suma: " + suma.ejecutar(5, 3)); // Output: Suma: 8.0
    }
}

Ejemplo 3: Tareas Asíncronas con Hilos

Supongamos que quieres ejecutar una tarea en un hilo separado. Puedes usar una clase anónima que implemente Runnable:

public class Main {
    public static void main(String[] args) {
        Runnable tarea = new Runnable() {
            @Override
            public void run() {
                System.out.println("Esta es una tarea asíncrona.");
            }
        };

        Thread thread = new Thread(tarea);
        thread.start(); // Inicia el hilo para ejecutar la tarea
    }
}

Estos ejemplos ilustran cómo las clases anónimas pueden ser útiles en diferentes situaciones para proporcionar implementaciones de interfaces o clases abstractas directamente en el lugar donde se necesitan.

Muy bien explicado.. Igualmente, en mi opinion, quizá no sea un tema para darle tantísima importancia como para aprenderselo tan en profundidad en los comienzos de java.. sino más bien es un tema que debemos saber qué está y entender la idea del mismo, para que llegado un caso que se nos presente, sepamos reconocer si este tipo de solución nos sirve y, simplemente buscando en la documentación o googleando un poco, podamos implementarlo en nuestro código

Todo esto si se usa en la vida real?

Actualmente deberia de estar amando a Java sin embargo despues de Typescript es imposible amar a otro lenguaje.
Aunque me gusta que sea tan diverso.

Ahora empiezo a recordar por qué odiaba Java!!

Entendí que una clase anónima es cuando instancio una clase abstracta e implemento allí los métodos abstractos. eso y en lo correcto?

interesante 😃

Super!!

si seria bueno otro ejemplo

Muy bien, así que para poder hacer una instanciación de una clase abstracta tendremos que usar una clase anónima que estructuralmente se ve cómo combinar la creación de un objeto, la creación de una clase y una sobre escritura de métodos. Además, las clases anónimas son especialmente usadas para momentos precisos de la aplicación, por ejemplo, al hacer clic a un botón después de seleccionar varias opciones.

Excelente conocer esta forma de “hackear el sistema” y ademas con un caso de uso de la vida real.

Gracias @anncode


Las clases anónimas son un hack para instanciar las Clases Abstractas e Interfaces. Su tiempo de vida es muy corto, es solo para ese momento.

Las clases anónimas son un hack para instanciar las clases abstractas o interfaces, pero su tiempo de vida es muy corto, es solo en ese momento.

wow

Notas de esta Clase:

  • Clases Anónimas

    Son una especie de hack para instanciar Clases abstractas. Dicha instanciación es temporal, pues sólo esta vigente en el momento en que se hace la instanciación, no puede reutilizar en otra Clase el comportamiento definido en una Clase anónima.

    User user1 = new User("Felipe Molina", "[email protected]") {
        @Override
        public void showDataUser() {
    		// Implementación
        }
    }
    
    user1.showDataUser();
    

    Las Clases anónimas se usan mucho en desarrollo para Android, para por ejemplo hacer un elemento clickeable. Usando una Clase anónima se puede agregar el método onClickListener y darle un comportamiento que sólo va a ser vigente para ese momento.

    Las Clases anónimas también se pueden usar con interfaces:

    ISchedulable iSchedulable = new ISchedulable() {
        @Override
        public void schedule(Date date, String time) {
    
        }
    };
    
    ISchedulable iSchedulable1 = new AppointmentDoctor();
    iSchedulable1.schedule(...);
    

¿Debería aprender programación funcional con Java si lo quier es hacer apps para Android?

una clase abstracta es lo mismo que una clase anónima, es la manera de instanciar la clase sin el uso de una de las clases hija.

java ta potente a medida que voy avanzando las clases, esta desafiante pero me gusta cada vez más java ❤️