Pessoal TO PRECISANDO usar isto e não consigo… Leia o trecho abaixo e respondam qual é a saida, sem compila-la, então compilem e me digam pq sai isto, msm q não saibam o pq respondam qual foi a saida q imaginaram quando leram – pergunta da sun…
é…
Tô dando uma olhada aqui…
estranho né
Essas coisas confundem a gente às vezes… quando eu acho que estou entendendo, aparecem casos assim…
Mantu
Olá flasoft!
Dá erro pelo seguinte: A instância referênciada pela variável var é do tipo A, e não tem como vc converter de A para A1.
Isto só daria certo se a instância armazenada por var fosse uma instância de A1, ou de alguma classe filha, neta, etc de A1:
Por que isto acontece? Porque não tem como vc utilizar uma referência de uma classe filha(A1 var1) para referenciar um objeto de uma classe pai(new A()). Perceba que isto é meio lógico, pois se var1 é do tipo A1, vc poderia fazer…
var1.incrementaB();
…Só que var1 estaria “apontando” para uma instância do tipo A, que não tem definido o método incrementaB(). Por isso que o compilador não permite que seja feito tal tipo de cast, e lança um ClassCastException
Qq dúsvida, pergunte mais, ok!
cassio
Mantu:
Olá flasoft!
Dá erro pelo seguinte: A instância referênciada pela variável var é do tipo A, e não tem como vc converter de A para A1.
Isto só daria certo se a instância armazenada por var fosse uma instância de A1, ou de alguma classe filha, neta, etc de A1:
Por que isto acontece? Porque não tem como vc utilizar uma referência de uma classe filha(A1 var1) para referenciar um objeto de uma classe pai(new A()). Perceba que isto é meio lógico, pois se var1 é do tipo A1, vc poderia fazer…
var1.incrementaB();
…Só que var1 estaria “apontando” para uma instância do tipo A, que não tem definido o método incrementaB(). Por isso que o compilador não permite que seja feito tal tipo de cast, e lança um ClassCastException
Qq dúsvida, pergunte mais, ok!
Pois é, eu falei isso ali em cima, mas o Flasoft falou sobre
Então a unica coisa q fazemos em um Cast é faze-lo voltar em a sua forma anterior(filha)?
No caso que você mostrou:
Graphics2D g2 = (Graphics2D)g;
O casting é valido pois o parametro do metodo recebe um Graphics g, mas lembresse que é uma variável do tipo Graphics que não tem uma referência a Graphics, portanto o casting é valido!!a variável g PODE ter uma referência a Graphics2D, no caso de não ter uma ClassCastException será lançada em tempo de execução…