A minha dúvida é na última parte quando ele retorna para a Classe B.
Consegui entender que ele imprime b e depois b mas não consegui entender o porque dele imprimir c também na resposta final.
Quando o método é chamado novamente o parâmetro passado não é -1... Ele não reveria retornar no if.... !?
if(i<0) return;
this.x(-1);
System.out.println("c");