Gustavo Santos:
COPIEM o código e COLEM ai no eclipse de vocês, derrepente um ou outro aprende também
com esse tipo que questão !!!
E por que a grosseria? Ninguém aqui tem a obrigação de copiar e colar códigos na hora de responder.
O que ocorre é que para avaliar a concatenação de strings, todas as funções devem ser avaliadas. Quando o getI() é avaliado, ele já imprime o Sub no console, para só depois retornar o valor. Esse valor é então concatenado na saída e um novo print é dado. Note que quem imprime a palavra sub() é o print que está dentro do getI() e não o println() do main.
Da próxima vez que se irritar assim, pense primeiro em usar um depurador, o seu eclipse tem um. Rode passo-a-passo o código, sem incomodar ninguém.
Se ainda assim você não entender, então, seja mais claro na sua dúvida, indicando exatamente a situação que você achou estranha. Assim fica bem claro para nós qual é a dúvida, afinal, ninguém aqui tem a obrigação de estudar minunciosamente o código linha-a-linha, em busca de situações estranhas causadas por códigos grotescos como esses da certificação.
Sem falar que 90% dos códigos desse tipo, a dúvida está em achar que variáveis são sobrescritas, além de métodos.