Olá! Pelo o que eu entendi, quando o código chega na classe B, vai ser executada a condição até satisfazê-la; mas enquanto não a satisfazer, o argumento do método main (32) vai ser decrementado e jogado para a subclasse C (imediata à B) até satisfazer a condição if(i<0)
e finalizar o método da classe B.
Para chegar ao método da classe B novamente (e ser decrementado), o argumento tem de passar pela primeira linha do método da classe C (System.out.println("b");
), para chegar na linha em que ele é transferido para o método da classe B.
A minha dúvida é: se a cada decremento, o método da classe B joga o i(32) para o método da classe C, sendo que esse tem como primeira instrução de execução a impressão da letra b, para depois ser jogado na classe B, por que só imprime duas letras b?