问答详情
源自:10-2 多态中的引用类型转换

求解答Animal animal=new Dog()和Animal animal=dog的解释为什么一样

视频中老师说Animal animal=dog是父类引用指向子类对象这不是和Animal animal=new Dog()解释一样吗?一种解释怎么会有两种表达方式?感觉很奇怪。

提问者:Rhybood 2018-10-18 16:59

个回答

  • __XiaoN
    2018-10-19 15:37:14
    已采纳

    第一种写法是定义一个Dog类的对象,就是你说的父类引用指向子类对象,思想是多态。

    第二种写法是定义Animal类的对象,并且把dog赋值给它。这里有一个隐藏的类型转换。可以分解成两句话实现,

    Animal animal = new Animal();

    animal = dog;

  • __XiaoN
    2018-10-18 17:35:20

    Animal animal = dog更倾向于赋值;

    可以在类里写一个变量,和对应的get、set方法。然后先将dog中的变量赋值,再把dog赋值给animal,此时animal中的变量就是dog赋值过的值。