【2021-07-05】分析程序的运行结果,并解释为什么?

未匹配的标注

请移步至::octocat:每日一题 查看更多的题目 ~

题目链接:【2021-07-05】分析程序的运行结果,并解释为什么?

答:

程序一的输出结果为:

animal

程序二的输出结果为:

我是一只猫

本题考查的知识点为多态。需要知道,多态分为编译时的多态性与运行时的多态性。

  • 多态的应用中,对于成员变量访问的特点:编译看左边,运行看左边
  • 多态的应用中,对于成员方法调用的特点:编译看左边,运行看右边

对于程序一,在程序编译时期,首先 JVM 会看向 Animal cat = new Cat(); 这句话等号左边的父类 Animal 是否有该变量(name)的定义,如果有则编译成功,如果没有则编译失败;在程序运行时期,对于成员变量,JVM 仍然会看向左边的所属类型,获取的是父类的成员变量。

对于程序二,在程序编译时期,首先 JVM 会看向 Animal cat = new Cat(); 这句话等号左边的类是否有该方法,如果有则编译成功,如果没有则编译失败;在程序运行时,则是要看等号右边的对象是如何实现该方法的,所以最终呈现的结果为右边对象对这个方法重写后的结果。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~