视频中老师说Animal animal=dog是父类引用指向子类对象这不是和Animal animal=new Dog()解释一样吗?一种解释怎么会有两种表达方式?感觉很奇怪。
第一种写法是定义一个Dog类的对象,就是你说的父类引用指向子类对象,思想是多态。
第二种写法是定义Animal类的对象,并且把dog赋值给它。这里有一个隐藏的类型转换。可以分解成两句话实现,
Animal animal = new Animal();
animal = dog;
Animal animal = dog更倾向于赋值;
可以在类里写一个变量,和对应的get、set方法。然后先将dog中的变量赋值,再把dog赋值给animal,此时animal中的变量就是dog赋值过的值。