Pergunta sobre herança e override

4 respostas
C

Ola pessoal. Estava fazendo o simulado do Whizlab e a primeira pergunta é a seguinte:

Which of the following methods inserted independently at the indicated line in the following code can cause it to compile correctly?

class SuperBase {}
class Base extends SuperBase{}
class Derived extends Base{}

class CovariantTest1{
    public Base getIt(){ return new Base();}

class SubCovariantTest extends CovariantTest1{
    //insert code here
}

Select any two options:

A: public Derived getIt(){ return new Derived();}

B: public Base getIt(){ return new Derived();}

C: public SuperBase getIt(){ return new Derived();}

D: public SuperBase getIt(){ return new Base;}

E: public Derived getIt(){ return new Base();}

No resultado, ele diz que as respostas certas são a letra A e B, mas ao tentar compilar utilizando estas respostas, o compilador me mostrou o seguinte erro ao tentar compilar com a resposta A:

The return type is incompatible with CovariantTest1.getIt()

A resposta B compila certo.

Nao entendi o porque…
Se alguem souber agradeço.

4 Respostas

sergiolopes

a resposta A está correta apenas no java 5, por causa do retorno covariante.
eu chutaria q vc testou no java 1.4… e aí isto estaria errado.

C

é… realmente testei no java 1.4…
Mas sinceramente não entendi o pq: pq funciona no 1.5 e nao no 1.4?

nbluis

Co-Variantes é uma implementação da Java 1.5 e nao funciona na 1.4 pois isso faria com que programas ja escritos com esta sintaxe tivessem problemas de versão de VM e conforme a sun isso nao é aceitavel para uma atualização.

Valeu;

C

Testei no 1.5 e funcionou bem.
Obrigado pelas respostas.

Criado 19 de agosto de 2006
Ultima resposta 21 de ago. de 2006
Respostas 4
Participantes 3