请问这个问题中为什么没有定义A接口和B接口的关系,就可以直接强制转换还没有报ClassCastException呢?
能否转型只和等号右边(运行时)的类型有关,等号右边都是new D();那么这个这个对象就可以按继承关系转成A,B,C的任意一种。
等号左边的类型只是限制了你能对这个对象的操作范围。
因为a实际上是子类D的实例,而D的实例是可以向上转型为A的
运行结果如下