Per dare una spiegazione in più:

Quando l'istruzione super viene utilizzata per richiamare il costruttore della classe base (quindi, sei obbligatoriamente dentro al costruttore della derivata), essa deve essere obbligatoriamente la prima istruzione del costruttore. Il motivo è semplice: per costruire la tua classe Quadrato, deve necessariamente essere prima costruito un oggetto di tipo Poligono. Se la classe base possiede un costruttore di default (no-arg), l'istruzione "super()" viene automaticamente aggiunta sottobanco dal costruttore; quando la classe base non prevede un costruttore no-arg, tale istruzione deve essere esplicitamente richiamata dal programmatore e deve essere fatta prima di ogni altra cosa.

La possiamo vedere anche dall'altro lato: perchè non posso richiamare il costruttore (tramite super) in un punto qualunque del costruttore della derivata? Perchè qualunque istruzione precedente a super si riferirebbe ad elementi della classe derivata, che ancora non può essere costruita in mancanza della costruzione della classe base.

Sono stato sufficientemente contorto?

Ciao.