Java Constructor y orden de inicialización de campo

Soy consciente de que los constructores de objetos Java inicializan implícitamente los campos no estáticos de su instancia. Sin embargo, no estoy seguro del orden en que esto sucede en una jerarquía de clases. Por ejemplo

abstract public class AbstractPieceSequence implements PieceSequence
{
    private Tetromino current;
    private Tetromino preview;

    public AbstractPieceSequence()
    {
        advance();
    }

    @Override
    public final void advance()
    {
        if (preview == null) {
            current = getNextPiece();
            preview = getNextPiece();
        } else {
            current = preview;
            preview = getNextPiece();
        }
    }

    abstract protected Tetromino getNextPiece();
}
public class ShufflePieceSequence extends AbstractPieceSequence
{
    private List<Shape> bag = new LinkedList<Shape>();

    @Override
    protected Tetromino getNextPiece()
    {
        if (bag.size() == 0) {
            Collections.addAll(bag, Shape.I, Shape.J, Shape.L, Shape.O, Shape.S, Shape.T, Shape.Z);
        }

        return Tetromino.tetrominoes.get(bag.remove(0));
    }
}

l constructor del padre llama a un método en la clase hija, que arroja una excepción como el valor deList<Shape> bag es actualmente nulo.

Puedo definir un constructor hijo y llamar a super (), pero esa debe ser la primera línea en el cuerpo del constructor (lo que significa que todavía no tengo la oportunidad de inicializar bag antes degetNextPiece se llama)

Me falta algo obvio.

Respuestas a la pregunta(4)

Su respuesta a la pregunta