Duvidas TestKiller

11 respostas
igor.guita

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 !!

11 Respostas

ricardo13

De onde vc tirou esta questão ??

Ricardo

igor.guita

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

ricardo13

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

renanpto

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

igor.guita

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

Abração

ricardo13

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

Ricardo

D

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

ricardo13

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

D

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

sobreira

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

D

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

Criado 18 de março de 2009
Ultima resposta 19 de mar. de 2009
Respostas 11
Participantes 5