Duvidas TestKiller

Bom pessoal estava fazendo o testkiller quando tive uma duvida em uma questao,nao sei se nao estendi mto bem mas esta ai :

10. interface A { public int getValue(); } 11. class B implements A { 12. public int getValue() { return 1; } 13. } 14. class C extends B { 15. // insert code here 16. }

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: B, C, D

Nao entendi porque a alternativa A e E nao são valida pois a Classe c extende de B que contem o metodo getValue() , a classe C nao herda os metods da classe B que foram implementados ???

Valeu pela ajuda !!

De onde vc tirou esta questão ??

Ricardo

Tirei do “310 055 Troytec TestKiller latest V6 (2007-2008)” … zuado esse ?

pelo q eu lembro não há problema.
Mas no enunciado da pergunta tem mencionado o seguinte “Qual faz uso do Polimorfismo”.

Daí, realmente, c.getValue(); … não é considerado Polimorfismo !!!

Polimorfismo seria B b = new C(); … ou A a = new B(); …ou até A a = new C();

Ricardo

Ela herda sim, mas o detalhe é o Polimorfismo.
Amigo, elas estao erradas pq acessam diretamente a referencia da class C.

hehe é verdade esse meu “the books on the table” ta ruim viu hauhauha
mas valeu pela ajuda renanpto e ricardo13 !!

Abração

Na prova é + ou - isso … tem q prestar a atenção na questão inteira … desde o enunciado até o código !!!

Ricardo

Eu não entendi pq estas alternativas não mostra o poliformismo.Alguém me explica??

Você sabe oq é Polimorfismo ???

class A {}
class B extends A {}
class C extends B {}

Polimorfismo seria o seguinte código:
A a = new B();
B b = new C();
A a = new C();

Isso não seria Polimorfismo:
A a = new A();
B b = new B();
C c = new C();

Se a classe A tivesse algum método em q o argumento fosse o objeto A ( por exemplo, getMethod( A arg ) { } ), daí poderia ser passado como argumento para este método qualquer objeto (B, C)

Ricardo

Entendi.Eu criei confusão pq pensei que vcs tinham dito que nenhum destes exemplos representa o poliformismo.

Não consegui enxergar onde a resposta B utiliza polimorfismo. Consideraria apenas C e D como coretas.

Vc poderia passar um atributo da classe C para este metódo.