Va bene chiamare il metodo astratto dal costruttore in Java?

Supponiamo di avere una class Base astratta che implementa l’interfaccia Runnable.

public abstract class Base implements Runnable { protected int param; public Base(final int param) { System.out.println("Base constructor"); this.param = param; // I'm using this param here new Thread(this).start(); System.out.println("Derivative thread created with param " + param); } @Override abstract public void run(); } 

E qui c’è una delle poche classi derivate.

 public class Derivative extends Base { public Derivative(final int param) { super(param); } @Override public void run() { System.out.println("Derivative is running with param " + param); } public static void main(String[] args) { Derivative thread = new Derivative(1); } } 

Il punto è che voglio che la mia class Base faccia alcune cose generali invece di copiarle ogni volta. In realtà, funziona bene, l’output è sempre lo stesso:

Costruttore di base Filetto derivativo creato con param 1 Derivativo è in esecuzione con param 1

Ma è sicuro IN JAVA avviare una discussione chiamando il metodo astratto nel costruttore? Perché, in C ++ e C # non è sicuro nella maggior parte dei casi, per quanto ne so. Grazie!