¿Cómo puedo obtener un String con el nombre de la clase hija desde una clase padre (herencia)?

publicado por: Anonymous

Si tengo una clase padre, por ejemplo Operacion, y tengo dos clases hijas, por ejemplo Suma y Resta, ¿cómo puedo obtener el nombre en formato String para que me devuelva “Suma” o “Resta” de las clases hijas desde la clase padre Operacion?

solución

Si siempre se debe devolver el nombre de la clase sin más, entonces puedes utilizar reflection. Crea un método en la clase padre así

public String nombre() {
    return this.getClass().getSimpleName();
}

Esto evita la necesitad de sobreescribir en las clases hijas. Aquí un ejemplo:

Operacion operacion = new Operacion();
Operacion suma = new Suma();
Operacion resta = new Resta();
System.out.println(operacion.getNombre());
System.out.println(suma.getNombre());
System.out.println(resta.getNombre());

En caso que utilices Java 8, puedes aumentar esta funcionalidad de una mejor manera vía interfaces de la siguiente forma:

public interface BrindaNombreSimple {
    default String getNombre() {
        return this.getClass().getSimpleName();
    }
}
public class Operacion implements BrindaNombreSimple {
    //definición de la clase...
    //no necesitas definir el método getNombre puesto que ya está en la interfaz
}

Esto permite que otras clases puedan tener esta misma funcionalidad sin necesidad de heredar de la clase Operacion.

Respondido por: user227

Leave a Reply

Your email address will not be published. Required fields are marked *