java中带强制转换的继承版本
我对下面的练习有点困惑,在搜索功能中没有发现这种问题
考虑到以下情况,以下哪些备选方案是可执行的:
class Animal
class Dog extends Animal //Dog is an extension of Animal
我们希望将类Dog
的对象分配给类型Animal
的变量:
(1) Animal t = new Object();
(2) Animal t = (Dog) (new Object());
(3) Animal t = new Dog();
(4) Animal t = (Dog) new Class();
- 错:错是因为它与狗无关李>
- good:对象是Dog的上等对象,我们将其投射到Dog,它扩展了动物,所以没关系李>
- 好的:这也没关系,因为每只狗都是动物李>
- 错误:新类没有定义,所以它是错误的李>
我的推理正确吗?我感谢你的帮助
# 1 楼答案
我没有试过,但我认为:
无效-一个
Object
不是一个Animal
-将不会编译无效-一个
Object
不是一个Animal
-将编译,但将在运行时失败fine-a
Dog
是一个Animal
这与(2)相同-您确定您复制的是正确的吗强>