一个类同时实现多个接口,但是没有定义接口之间的继承关系,为什么能强转?

请问这个问题中为什么没有定义A接口和B接口的关系,就可以直接强制转换还没有报ClassCastException呢?

img

能否转型只和等号右边(运行时)的类型有关,
等号右边都是new D();
那么这个这个对象就可以按继承关系转成A,B,C的任意一种。


等号左边的类型只是限制了你能对这个对象的操作范围。

因为a实际上是子类D的实例,而D的实例是可以向上转型为A的
img

运行结果如下

img