Java конструктор и порядок инициализации поля

Я знаю, что конструкторы объектов Java неявно инициализируют нестатические поля своего экземпляра. Однако я не уверен в том, что это происходит в иерархии классов. Например

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));
    }
}

Конструктор родителя вызывает метод в дочернем классе, который выбрасывает исключение как значениеList<Shape> bag в настоящее время ноль.

Я могу определить дочерний конструктор и вызвать super (), но это должна быть первая строка в теле конструктора (что означает, что у меня все еще нет возможности инициализировать bag передgetNextPiece называется)

Я упускаю что-то очевидное.

Ответы на вопрос(4)

Ваш ответ на вопрос