一个关于java调用顺序的题目
来源:互联网 发布:林志炫浮夸知乎 编辑:程序博客网 时间:2024/05/16 01:03
在牛客网上刷到了一道很有意思的java题
这道题还是有一些绕的,但是如果对java的调用顺序十分了解的话,做对这道题也很容易。
首先程序执行了new B(),new B里上来super(5),我们就要去找到B的父类A中的构造方法,A中的构造方法执行了一步setValue(),这里是第一个重点,就是这个setValue执行的是A的setValue还是B的setValue。
这里因为我们执行的是new B,所以我们首先要去找的是B中的setValue方法,如果B中没有setValue(),程序才会去实现父类A的setValue方法。
所以这个时候v的值实际上是10.。到了这一步super(5)就执行完了。
接着向下执行setValue(getValue()-3)。
B中并没有getValue(),所以去找他的父类A的getValue方法。value++,value的值变成11,再执行finally部分,this.setValue显然又是调用了B的setValue方法,所以这个时候输出的是22。但是这个时候要注意,返回的value值依然是11。因为try 中的return已经返回了value。
接下来按照这个思路,就可以很轻松的分析出程序的执行结果了
0 0
- 一个关于java调用顺序的题目
- 一个关于java继承的题目
- 一个关于StringBuffer的java题目
- java关于类的初始化顺序-面试题目
- 关于java初始化顺序的一个示例
- 关于java的多态方法调用顺序的问题
- java关于继承中构造函数的调用顺序
- 一道关于实例化顺序的题目
- 一道关于加载顺序的题目分析
- 关于自然数的一个题目
- 一个关于区间的题目
- 一个关于static的题目
- 一个题目深入理解 java继承中构造方法的执行顺序
- 一个简单的Java题目
- 关于构造函数的调用顺序
- 关于构造函数的调用顺序
- 关于构造函数的调用顺序
- 关于函数模板重载的调用顺序
- Linux中查看端口号以及接触端口
- Mac卸载Fiddler后无法上网的解决方法
- Java丨仿“有道云笔记”项目 取名"Program 猿笔记"
- 备份与恢复
- python 数组文件读取,数组拼接
- 一个关于java调用顺序的题目
- easyUI(八) --combobox的onchange事件(联动效果实现)
- jQuery里的trim()函数在浏览器上面支持的问题
- Servlet跳转到其他组件②
- 关于防止一个账号在不同机器上重复登录
- 深度学习框架Keras安装指南
- git简单推送到远程仓库流程
- 微信小程序
- Leetcode 22. Generate Parentheses