Animal animal = new Dog(); //这里 animal 不能 访问Dog里面的属性和方法 //我想知道是 在 new Dog() 的时候, 底层是怎么运行的,
????底层实际上它就是一条狗啦!这么说吧,有一个动物,它是狗,但是它也可以是猪啊! 所以现在得animal 是不能知道你new的那个具体动物的属性的。
Dog dog = (Dog) animal; 至于这条语句,底层也没有做什么改变,只是和JVM这个家伙说一声,这个animal是狗啊,所以animal就知道你new的是一条狗,而不是猪,猫。也就自然知道该有什么属性了