【2021-07-05】分析程序的运行结果,并解释为什么?
请移步至:
每日一题 查看更多的题目 ~
题目链接:【2021-07-05】分析程序的运行结果,并解释为什么?
答:
程序一的输出结果为:
animal
程序二的输出结果为:
我是一只猫
本题考查的知识点为多态。需要知道,多态分为编译时的多态性与运行时的多态性。
- 多态的应用中,对于成员变量访问的特点:编译看左边,运行看左边
- 多态的应用中,对于成员方法调用的特点:编译看左边,运行看右边
对于程序一,在程序编译时期,首先 JVM 会看向 Animal cat = new Cat();
这句话等号左边的父类 Animal 是否有该变量(name)的定义,如果有则编译成功,如果没有则编译失败;在程序运行时期,对于成员变量,JVM 仍然会看向左边的所属类型,获取的是父类的成员变量。
对于程序二,在程序编译时期,首先 JVM 会看向 Animal cat = new Cat();
这句话等号左边的类是否有该方法,如果有则编译成功,如果没有则编译失败;在程序运行时,则是要看等号右边的对象是如何实现该方法的,所以最终呈现的结果为右边对象对这个方法重写后的结果。