为什么多态下不能调用子类特有方法????

图片说明
图片说明

如果 ,内存中应该Animal 的引用 指向的是堆内存中的new Dog();而方法区中 Dog.class 里应该有一个look();方法但是为什么不能调用/??

这种事情为啥子纠结
首先这是java的语法规定
Animal a = new Dog();这种写法,是编译时期,声明了一个Animal类型引用
一个Animal类型的变量,当然不能调用.look方法,因为你没声明啊,
new Dog();在运行的时候,JVM,发现new关键字,开辟一片内存空间,并且调用
构造进行初始化,生成了Dog对象,在调用具体实现的时候会调用dog的eat
方法,也就是多态。

很简单啊,子类是可以调用父类方法的,这叫遗传继承。。。。
父类调用子类方法?子类是要搞特色的,父类能调用不合理

声明的就是animal类型,到了运行时期,animal中没有的方法,JVM也不会去dog类中查找,所以是不能调用的