Danilo, segue o passo a passo:
classe B declarada com métodos x (que printa y) e y (que faz nada);
classe C extende B. C herda os métodos x (que printa y) e o método y é sobrescrito pra fazer nada (nem precisaria ter a declaração dele, já que foi herdado e continua sem fazer nada);
classe D extende C. D herda os métodos x (que printa y) de C que, por sua vez, herdou de B. O método y é sobrescrito pra retornar 1;
classe A declarada. Objeto "d" do tipo D é criado (que tem o método x [que printa y]). Objeto "d" sofre cast pra C (que contém o método x [que printa y] e contém, também, o método y [que não faz nada]). "d", que sofre cast pra C (que tem o método x [que printa y] e tem, também, o método y [que não faz nada]), sofre novo cast pra D, que tem o metodo x [que printa y] e tem, também, o método y [que retorna 1] **Aqui está de onde sai o 1**.
d.x() -> "d" tem os métodos x [que printa y] herdado de C que, por sua vez, foi herdado de B, e o método y [que retorna 1], herdado de C mas que foi sobrescrito para retornar 1.
Assim, o método d.x() printa y (que retorna 1).
A saída será 1.
Ficou mais fácil de compreender?
Qualquer coisa, só postar.
Abraço.