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