据我所知,不可能将超类的对象转换为子类的对象。这将编译,但在运行时会返回错误。
更具体地说,给定以下类和接口的层次结构:
. Alpha 是 Beta 和 Gamma 的超类
。Gamma 是 Delta 和 Omega 的超类
。接口“In”由 Beta 和 Delta 实现
在这种情况下,我定义了以下代码:
Delta r;
Gamma q;
它是否正确?
r = (Delta) q;
即使 Delta 是 Gamma 的子类,我可以将 q 转换为 Delta 类型吗?我认为这是不可能的,我的教科书另有说明。我已经搜索了很多,据此我是对的,这是教科书上的错误。
我错过了什么吗?