you could cast a "Apple" object to a "Fruit". You could cast a "Chihuahua" to a "Dog".
You might be able to cast a "Fruit" to a "Pear", and you might be able to cast a "Dog" to a "Greyhound"
You can never cast a "Pumpkin" to an "Automobile", or an "Airplane" to a "GreatWhiteShark"
Casting doesn't magically change an object from one type to another. you can only cast up and down the hierarchy tree where the object lives - and when down-casting, you might run into problems if you take the wrong branch.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors