An animal could not be a dog can be a cat or something else like in your case an Animal
Animal a= new Animal(); // a points in heap to Animal object
Dog dog = (Dog)a; // A dog is an animal but not all animals are dog
For downcasting you have to do this
Animal a = new Dog();
Dog dog = (Dog)a;
By the way, downcasting is dangerous you can have this RuntimeException
, if it's for training purpose it's ok.
If you want to avoid runtime exceptions you can do this check but it'll be a little more slower.
Animal a = new Dog();
Dog dog = null;
if(a instanceof Dog){
dog = (Dog)a;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…