Downcast

2 respostas
acjZer0

opa galera procurei mas na achei nada como o que estou enfrentando então se me derem um força ja que estou estudando para scjp, e bem vinda ^^
muito obrigado!!

o probelma e o seguinte nao estou conseguindo fazer um downcast, e nao sei por que, voces poderiam explicar aonde estou errando?
(o erro especifico e quando tento chamar algum metodo ou transformar em dog novamente e chamar metodos de dog...)

(erro: init:
deps-jar:
Compiling 1 source file to C:\Users\psychopath\Documents\NetBeansProjects\JavaApplication1\build\classes
compile:
run:
Exception in thread "main" java.lang.ClassCastException: javaapplication1.animal cannot be cast to javaapplication1.dog
at javaapplication1.Main.main(Main.java:22)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
)

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        
            animal a = new animal(); 
         
            dog d = (dog) a;
             
            animal a2 = (animal) d;
            
            a.grunir();
            a2.grunir();

}

}
package javaapplication1;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author psychopath
 */
public class dog extends animal{

    
    
    @Override
     public void latir()
    {
        System.out.println("late classe filha");
    }
   
    @Override
     public void rolar()
     {
         System.out.println("rola classe filha");
     }

   
 public void voar()
    {
        System.out.println("zooommmmmm");
    }  
   
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication1;

/**
 *
 * @author psychopath
 */
public class animal 
{

public void grunir()
    {
        System.out.println("groounnnarrkkk");
    }
    
    public void latir()
    {
        System.out.println("late classe mae");
    }
    
    
    public void rolar()
     {
         System.out.println("rola classe filha");
     }
    
}

FAVOR NAO REPARAR EM COISAS COMO O CAO VOANDO E TALZ... E SO PARA TESTES... xd

2 Respostas

T
animal a = new animal();   
dog d = (dog) a;

Isto obviamente está errado. Você não pode forçar um “animal” a ser um “dog” se ele não é um “dog”.

acjZer0

poxa vlw thingol

entendi… muito obrigado mesmo!!!

Criado 10 de setembro de 2008
Ultima resposta 10 de set. de 2008
Respostas 2
Participantes 2