Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

262
Vistas
¿Esta implementación se llamaría clase anónima?

He visto esto muchas veces, pero estoy un poco confundido si esto se llamaría o no una clase anónima.

 public class Test { public static void main(String[] args) { new Thread(){ @Override public void run() { System.out.println("##"); } }.start(); } }

La razón por la que estoy confundido es porque las clases anónimas no tienen nombre, pero claramente ya tenemos una clase "Subproceso" en la API de Java, lo que significa que tiene un nombre, y si tiene un nombre, ¿cómo puede ser anónimo? class, y si no es una clase anónima, entonces qué es.

Sé que es un poco tonto, pero no puedo razonar de manera determinista porque veo argumentos válidos en ambos lados.

Además, arriba puedo anular claramente el método de run de la clase Thread , ahora si creo mi propia clase, digamos MyClass , defino algunos métodos en ella y luego intento hacer lo mismo que arriba, entonces ¿por qué no puedo anular los métodos de MyClass ? forma en que pude anular el método de run de la clase Thread .

 public class MyClass { private void myMethod1() { } private void myMethod2() { } } public class Test { public static void main(String[] args) { new MyClass(){ // why I cannot override "myMethod1" and "myMethod1" of `MyClass`, they way I was able to override `run` method of `Thread` class }; } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

  1. Sí, su primera clase es anónima ya que está en línea y se extiende desde Thread. No es lo mismo que su clase Thread.
  2. Con respecto a MyClass : por supuesto, no puede extender métodos privados. Esto no tiene nada que ver con clases anónimas y son reglas básicas de herencia de Java. Hágalos públicos y podrá extenderlos en línea.

Para aclarar, si tiene una clase anidada que tiene un nombre, puede declarar una variable de su tipo:

 public class Test { private static class MyThread extends Thread { @Override public void run() { System.out.println("Foo"); } } public static void main(String[] args) { MyThread myThread = new MyThread(); } }

Pero si tienes una clase anónima, no puedes hacer esto:

 public static void main(String[] args) { new Thread(){ @Override public void run() { System.out.println("##"); } }.start(); // how can you declare a variable of the above type *with* its behavior? }

Bit lateral: casi nunca debe extender Thread y, en su lugar, implementar Runnable, o incluso mejor, usar ejecutores para ayudarlo a hacer su subprocesamiento.


re:

Ok, gracias por su respuesta, corríjame según lo entiendo: al usar una clase anónima, puedo crear una clase nueva (básicamente, la implementación de una interfaz) en tiempo de ejecución, también puedo extender una clase existente y eso aún se llamaría "clase anónima "?

Sí , crea una clase nueva, pero no necesariamente implementa una interfaz. De hecho, su ejemplo anterior no tiene nada que ver directamente con las interfaces y todo que ver con la extensión de una clase concreta existente. Puede y, a menudo, crea clases anónimas que implementan interfaces, siendo Runnable un ejemplo común, pero su ejemplo anterior no es "básicamente la implementación de una interfaz".

over 4 years ago · Santiago Trujillo Denunciar

0

Subproceso de clase pública extiende Objeto implementa Ejecutable

Básicamente, está creando una clase anónima de Class Thread , pero debido a que Thread Class implements Runnable (que es una interfaz funcional que tiene un método abstracto) -> tiene que @override run() método que proviene de Runnable Interface

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda