
Alguém poderia me dizer porque o resultado é 1 2 1 e não 1 2 2...
Já que p3 é um B ...

Alguém poderia me dizer porque o resultado é 1 2 1 e não 1 2 2...
Já que p3 é um B ...
Boa tarde Rafael,
Dê uma olhada na definição abaixo:
A p3 = new B();
A é o tipo da variável p1, e essa variável recebeu um objeto do tipo B, isso é possível devido a B herdar de A. Portanto todo B é um A.
Como p3 é do tipo A ele vai usar todos os métodos de A , menos os que forem rescritos em B .
E pelo exercício parece que o getValor foi rescrito em B, mas na verdade ele não foi, pois é um método estático (static). Métodos estáticos não podem ser rescritos(eles pertencem somente a classe), portanto p3 continuará usando o getValor da classe A.
Muito confuso não? Recomendo dar uma olhada no curso de Java 3 onde se explica melhor o polimorfismo.
Abraços
Certo, Vinícius. Obrigado pela ajuda. Deu pra entender sim.
Mas de qq forma vou me matricular no curso pra aprender mais as nuâncias rs