Fazendo o mock, me deparei com uma dúvida se uma chamada é ou não polimórfica, pois a resposta do mock diz que sim, e eu acho que é de se questionar
veja a questão, as respostas, e por fim minha dúvida:
Questão:
Consider the following classes :
class A{
public void mA(){ };
}
class B extends A {
public void mA(){ }
public void mB() { }
}
class C extends B {
public void mC(){ }
}
and the following declarations:
A x = new B(); B y = new B(); B z = new C();
Which of the following calls are polymorphic calls?
Respostas:
a)x.mA(); -->polimorfica
b)x.mB();
c)y.mA();-->polimorfica
d)z.mC();
e)z.mB();-->polimorfica
Dúvida:
B y = new B(), aqui existe uma variável do tipo b, e a mesma na opção c, esta fazendo chamada a um método sobrescrito, ou seja, não está havendo uma escolha em tempo de execução de qual "versão" do método será chamado, já que a referência não é do tipo "A", desta forma a pergunta é:
chamada de um método sobrescrito na variável de referência "x" é sempre considerada uma chamada polimórfica?
Espero ter conseguido transmitir a minha dúvida.
