Estou estudando para a certificação e achei essa questão no ExamLab. Eu respondi q a saída será “1Sub 2”. Mas a saída aparece “Sub1 2”.
Não entendi pq acontece isso se o método main manda imprimir primeiro o atributo ge.i e depois chama o método. Pq??? Pq???
Note que métodos são overridden (sobreescritos), mas atributos são hidden (escondidos).
O atributo “i” declarado na classe Greek esconde o atributo “i” declarado na classe Arabik.
Ao imprimir o valor de “i”, leva-se em conta o tipo da variável, não o classe do objeto.
F
fdcarli
Ainda continuo não entendendo a ordem de impressão
Sub1 2
grato…
T
thingol
System.out.println(ge.i+" "+ge.getI());
a) O Java chama ge.i, que retorna o valor 1
b) O Java concatena esse valor “1” ao espaço, ou seja, vai dar "1 ". Note que ainda nada foi impresso, só estamos montando uma string
c) A seguir, o Java chama ge.getI(). Essa rotina faz 2 coisas:
Ela imprime “Sub”
Agora é que ela retorna o valor 2
d) Acabamos de montar a string, que é “1 2”. Depois que a string está montada é que System.out.println pode imprimir a string inteira, ou seja, “1 2”.
Portanto, o que será impresso é “Sub1 2”.
lipe82
putz, essa pegadinha é massa! Vlw Thingol, é nóis rumo a certificação