Java Constructor i kolejność inicjalizacji pola

Wiem, że konstruktory obiektów Java domyślnie inicjują niestatyczne pola swoich instancji. Jednak nie jestem pewien kolejności, w jakiej dzieje się to w hierarchii klas. Na przykład

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

Konstruktor rodzica wywołuje metodę w klasie potomnej, która zgłasza wyjątek jako wartośćList<Shape> bag jest obecnie zerowy.

Mogę zdefiniować konstruktor potomny i wywołać super (), ale musi to być pierwszy wiersz w treści konstruktora (co oznacza, że nadal nie mam okazji zainicjować torby przedgetNextPiece nazywa się)

Brakuje mi czegoś oczywistego.

questionAnswers(4)

yourAnswerToTheQuestion