这是为什么不能转呢
所以是需要本身new所创建的类型是dog类型是吗?Animal b=new Dog();向上自动转为了Animal,这个时候可以向下转为Dog类型。如果是new Animal();本身new的类型就是Animal,就不能向下转了。不知道是不是这样.求解
.父类引用对象指向的是子类对象,那么在向下转型的过程中是安全的,就是编译是不会出错误。
但是如果父类引用对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会 出现 Java 强制类型转换异常
向下强制转换当然不行了
主要问题是第一张图你new的是基类对象,在内存中也只有基类信息,你向下强制当然不行,就没有子类的内容
第二张图你new的是子类对象,虽然赋值给基类指针,但内存中实际上是子类信息,所以再转换为子类对象,当然OK了