先看代码如下:

运行结果

在上述代码中,类B继承了类A,类C继承了类B,A中show()方法发生了重载,B中重写了A中的show(C )方法。

这里先说一下向上造型的一个知识点:向上造型时,编译期时根据引用类型(左边)调用方法,而运行期是根据实例对象的类型(右边)调用方法。

第一条输出语句是 父类引用a1 指向 父类实例对象,编译时查看A类中是否有show(c)的方法,有,通过,运行,输出1---A and C;

第二条输出语句是 父类引用a2 指向 子类实例对象,因为子类B重写了父类的show(c)方法,所以向上造型(父类引用指向子类对象)时,父类A型引用变量可以点出子类B中的show(c)方法,编译通过,运行时调用子类B中的show(C)方法,结果为2----B and C;

第三条输出语句是 父类引用变量a2 指向 子类实例对象,根据优先级顺序,先看第一个级别this.show(object),因为向上造型,所以父类引用a2点不出子类B中的show(b)方法,编译不行;再看第二个级别super.show(object),父类A中也没有show(b)方法,编译不通过;然后再看第三个级别this.show(super(object)),此时a2.show(b)就变成了a2.show(a),B 因为继承了A类,所以B中有show(a)的方法,编译通过,到运行期,根据对象类型调用方法,输出结果就是3---A and A。

)

java继承链中方法调用优先级.顺序:this.show(object)super.show(object)this.show((super)object)super.show((super))相关推荐

  1. java 子类继承父类各方法的执行顺序

    结论: java中子类继承父类各方法的执行顺序:(这里只写jvm自动调用的方法的顺序,包括静态代码块.代码块.构造方法) 1.第一次创建子类对象 父类静态代码块 子类静态代码块 父类代码块 父类构造方 ...

  2. 深入浅出JVM(五)之Java中方法调用

    方法调用 要知道Java中方法调用唯一目的就是确定要调用哪一个方法 方法调用可以分为解析调用和分派调用,接下来会详细介绍 非虚方法与虚方法 非虚方法: 静态方法,私有方法,父类中的方法,被final修 ...

  3. python类中方法的执行顺序-浅谈Python的方法解析顺序(MRO)

    方法解析顺序, Method Resolution Order 从一段代码开始 考虑下面的情况: class A(object): def foo(self): print('A.foo()') cl ...

  4. ASP.NET Core启动地址配置方法及优先级顺序 | .NET 6 版本

    前言 上次,我们讨论了如何通过配置或代码方式修改启动地址:<ASP.NET Core启动地址配置方法及优先级顺序>.不过是基于 .NET 5 版本的. 由于 .NET 6 使用了最小 WE ...

  5. 如何在PHP中实现链式方法调用

    写程序的人都喜欢偷懒,希望少打几行代码,并且让代码看起来很酷. 所以很多人写程序都会选择三元运算取代if..else.... 而用过JS的人应该都见识过js中的链式方法. 如 somevars.fun ...

  6. Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)

    原文地址:http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html 在Java中,所有的对象变量都是引用,Java通 ...

  7. java中方法调用的三种方式

    直接调用:方法名称(实际参数) 输出调用:把方法调用放到输出语句中,注意:输出调用时,调用的方法必须有返回值 [System.out.println(getSum(12,13))]; 赋值调用:把方法 ...

  8. java继承 后的方法_Java 继承

    extends 继承 1.继承是什么,为什么继承 使用 extends 父类 子类继承父类,代码可以得到复用 使用继承机制可以做到方法的覆盖和多态机制 继承也是存在缺点的:耦合度高,父类修改,子类受牵 ...

  9. java多态 重写(override)的调用优先级

    常规的说法是这样的: 在调用一个方法时,先从本类中查找看是否有对应的方法,如果没有再到父类中查看,看是否从父类继承来.否则就要对参数进行转型,转成父类之后看是否有对应的方法.总的来说,方法调用的优先级 ...

最新文章

  1. C语言实现十大经典排序算法
  2. c语言程序设计字节,C语言程序设计-数据类型
  3. 用SQL Server Compact Edition创建移动应用程序 【转载】
  4. java虚拟机编译_[四] java虚拟机JVM编译器编译代码简介 字节码指令实例 代码到底编译成了什么形式...
  5. 计算机操作基础英语,计算机操作基础word练习题参考答案
  6. STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)
  7. 什么是validationQuery
  8. Unicode 和 UTF-8 之间的关系
  9. 光栅衍射主极大个数_基于达曼光栅的双目视觉系统
  10. 网络核心之数据交换 - 报文、分组交换
  11. consul docker register
  12. linux ps命令查看当前线程正在执行的程序
  13. perl 语言(数组)
  14. 安卓自定义Toast的原理及实现
  15. 计算机桌面图标右上角出现双箭头符号,电脑桌面上的图标有小箭头怎么清除?...
  16. 山西机电职业技术学院计算机专业,山西机电职业技术学院怎么样?山西机电职业技术学院好吗?(历年分数、专业设置、校园环境、教学实力、名人校友) - 职友集...
  17. pocket pc 2003 联网
  18. Linux文件管理之(高级)、⽂件查找、上传与下载、输出与重定向、字符处理命令、打包压缩解压缩、文件系统
  19. 字体样式字体分类字体样式二
  20. VirtualBox中win7系统无法安装增强功能

热门文章

  1. IDEA快捷键转换大小写
  2. 同步交互与异步交互(简单易懂)
  3. 下暴你的硬盘 超多游戏下载 不爆你找我! (二)
  4. C语言项目-精忠报国-第二天-COORD windows.h头文件/conio.h getch()函数/game.c showMap()函数 文字突出/怪物计数与打印/随机攻击力 stblib.h
  5. Doxygen 使用说明
  6. vue3最全路由使用教程
  7. 白月光与朱砂痣用计算机怎么弹奏,天谕白月光与朱砂痣钢琴谱 乐谱代码怎么使用...
  8. 依据imu姿态角计算z轴倾角_树莓派小车-07-IMU姿态解算 imu_complementray_filter
  9. 4个亲测有效的视频压缩工具,压缩视频体积小、画质清晰
  10. ccs安装多版本编译器离线_CCS6.0教程_ccs 全速运行,ccs6 离线安装缺少100v2 驱动-C文档类资源...