Polymorphism [Resolvido]

Pessoal, eu realmente não entendi essa questão…alguem pode me ajudar?

  1. interface A { public int getValue() }
  2. class B implements A {
  3. public int getValue() { return 1; }
  4. }
  5. class C extends B {
  6. // insert code here
  7. }
    Which three code fragments, inserted individually at line 15, make use
    of polymorphism? (Choose three.)
    A. public void add(C c) { c.getValue(); }
    B. public void add(B b) { b.getValue(); }
    C. public void add(A a) { a.getValue(); }
    D. public void add(A a, B b) { a.getValue(); }
    E. public void add(C c1, C c2) { c1.getValue(); }

Answer: BCD

obrigada

Na alternativa A você recebe uma instância de C como argumento, e como C não é pai de ninguém, não tem como fazer uma chamada polimórfica, concorda?

Na alternativa B você recebe uma instância de B, então pode enviar para esse método tanto um B quanto um C, já que C É-UM B, possibilitando assim uma chamada polimórfica.

Na alternativa C você recebe uma instância de A, então pode enviar para esse método tanto um B quanto um C (ou qualquer outra coisa que implemente A), já que C É-UM B e B É-UM A, possibilitando assim uma chamada polimórfica.

Na alternativa D você recebe uma instância de A e uma de B, e ambas como vimos acima, possibilitam chamadas polimórficas.

Na alternativa E você recebe duas instâncias de C, e como vimos acima, com isso não podemos fazer uma chamada polimórfica.

entendido… Obrigada Rodrigo :smiley: