java 多态中向下转型怎么不能这样写,不明白。

源代码:
Master m=new Master();
_ Pet p=new Pet();//父类
Dog d=(Dog)p;//向下转型
Cat c=(Cat)p;//向下转型
YingWu y=(YingWu)p;//向下转型_
if(p instanceof Pet) {
m.feed(p);
}else if(d instanceof Dog){
m.feed(y);
}else if(c instanceof Cat) {
m.feed(c);
}else if(y instanceof YingWu) {

m.feed(d);
}

执行结果:
Exception in thread "main"** java.lang.ClassCastException**: class text02.Instrument cannot be cast to class text02.Piano (text02.Instrument and text02.Piano are in unnamed module of loader 'app')
at text02.Day17011.main(Day17011.java:17)

向下转型理解有误,不能将父类的实例向下转为子类型