Il costruttore
Y(int i) { }
scritto così "sembra" vuoto ma bisogna sempre ricordare che la PRIMA istruzione di un costruttore deve essere una invocazione this() o super() con o senza argomenti.
Se non c'è una di queste due in modo esplicito, il compilatore mette per default una invocazione super() (senza argomenti).
In X (la superclasse) però NON c'è un costruttore senza argomenti. Quindi, errore.