有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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();
  1. :错是因为它与狗无关
  2. good:对象是Dog的上等对象,我们将其投射到Dog,它扩展了动物,所以没关系
  3. 好的:这也没关系,因为每只狗都是动物
  4. 错误:新类没有定义,所以它是错误的

我的推理正确吗?我感谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    我没有试过,但我认为:

    (1) Animal t = new Object(); 
    

    无效-一个Object不是一个Animal-将不会编译

    (2) Animal t = (Dog) (new Object());
    

    无效-一个Object不是一个Animal-将编译,但将在运行时失败

    (3) Animal t = new Dog();
    

    fine-aDog是一个Animal

    (4) Animal t = (Dog) new Class();
    

    这与(2)相同-您确定您复制的是正确的吗