Bom, ga.i vai acessar a própria classe Greek. ga.getI() vai acessar da classe que foi determinado tipo. Como foi feito new Arabic(), então ele vai no metodo getI() de Arabic.
evertonsilvagomesjav
brunorota:
Olá galera
Não entendi o porque dessa saída nessa pergunta
ga.i ele exibe na tela o atributo "i" de Greek porque nao ocorre polimorfismo com variaveis e quando vc faz ga.getI() como vc sobreescreveu o método em Arabik ele chama este método sobreescrito, por isso tem esta saida.
brunorota
humm
Mais minha duvida eh pq aparece primeiro o numero e soh depois o Sub entendeu?
Sendo a na chamda System.out.print está primeiro o ga.i que aki imprimiria o numero e depois chama o metodo que imprime a String e depois o numero
System.out.println(ga.i+" "+ga.getI());
Nao é soh na cahmada do método que ia ter q imprimir a String Sub
O resultado ele imprimi primeiro a String e soh depois os numeros
Eh com isso q eu to encafifado ihau
evertonsilvagomesjav
brunorota:
humm
Mais minha duvida eh pq aparece primeiro o numero e soh depois o Sub entendeu?
Sendo a na chamda System.out.print está primeiro o ga.i que aki imprimiria o numero e depois chama o metodo que imprime a String e depois o numero
System.out.println(ga.i+" "+ga.getI());
Nao é soh na cahmada do método que ia ter q imprimir a String Sub
O resultado ele imprimi primeiro a String e soh depois os numeros
Eh com isso q eu to encafifado ihau
Pelo que to vendo a saida tem que ser 1 Sub2
luiz_renato
Olha,
Se estiver errado , a gelara me corrija por favor pois tbm estou estudando …
Me parece na concatenação ga.i + " " + ga.getI() ga.get() imprime Sub antes de retornar o valor de i e após isso a concatenação é feita, fazendo com que Sub seja impresso antes de ga.i
Luiz Renato
luiz.portnoy
Bom, debuguei isso umas trocentas vezes. Aí, me liguei em uma coisa: a ordem de execução de uma função é primeiro chamar uma função. Assim sendo, quando chamamos System.out.print(), dentro dessa função é verificado a existencia primeiro de outra função. E realmente tem que é a função getI(). Como essa função dentro dela tem um System.out.print() e ele não quebra linhas, então ele imprime Sub, devolve o valor pra função que chamou (System.out.print()), ai sim, é executada a ordem normal.
Complicado mas acho que é assim que funciona.
Espero ter ajudado
brunorota
Vdd
Pode ser isso mesmo
Só que eu não sabia pra mim era por ordem, independente se é função ou não