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.