Duvida em uma questao do livro do Rubinstein

3 respostas
V

Colegas surgiu uma dúvida em uma questão e gostaria de algum esclarecimento já que estou estudando sozinho :

Segue a questão :

interface Inter{}
class Base implements Inter{}
class Derived extends Base{}

public class Test {

	public static void main(String[] args) {
		Base b = new Base();
		Derived d = new Derived();
		Inter i = (Base)b;
		i = (Base)d;
		Derived dd = (Derived) b; //3
		b =  (Base) i; // 4
	}

a resposta para esta questão eu entendi que é um ClassCastException em tempo de execução na LINHA 3 pois esta tentando colocar Base em Derived !

Mas a minha dúvida é nao seria também erro na linha 4 ja que está tentando também colocar Inter dentro de Base - REDUÇÃO !

Fiz no micro e realmente passou a linha 4 mas eu nao entendi por que pois está havendo redução nas duas linhas 3 e 4 !
Troquei a interface (Inter) por uma classe mas também passou :frowning:

Não entendi o por quê ?

Alguem saberia me explicar ?

vimieiro

3 Respostas

V

Ninguem ?!?

mapleplayer

Onde você menciona ser a linha 4 não é erro pois na seguinte linha:

Inter i = (Base)b;

você atribui um objeto Base a referência i
então, quando você chega na linha 4

b =  (Base) i;

você esta fazendo um cast daquele objeto Base referênciado por i e
atribuindo ele novamente a b

V

Colega, debuguei aqui e consegui entender !

Perfeito

Muito obrigado

Criado 1 de março de 2012
Ultima resposta 2 de mar. de 2012
Respostas 3
Participantes 2