Java中父类和子类中的方法调用和参数传递总结
来源:互联网 发布:软件测试个人外包 编辑:程序博客网 时间:2024/06/15 07:11
有这样一段程序,看看它会输出什么结果
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
输出:
- 1
- 2
- 3
这段程序咋一看没什么特殊的,但是细细分析下来,发现想搞清楚它的运行过程还真不简单。通过Eclipse单步调试,得出其运行流程如下:(序号1、2就表示运行次序)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
通过对上述程序的分析,可以得到如下信息:
1、当子类对象调用一个方法时,会优先在子类中查找,然后才回去父类中查找。如果子类调用了父类的方法method1,而method1又调用了method2,那么这个method2还是会优先在子类中查找,找不到才会去父类中查找。
2、如果子类继承了父类的成员变量(前提是可以继承public和protected),而子类没有显示覆盖该成员变量,那么子类访问到的成员变量和父类访问到的成员变量是同一个变量。任何一个修改后都会影响到另一个。
3、try中的return会在finally语句块之后运行,如果finally语句块中有return语句,那个就直接返回这个return值。如果没有,就返回try中的return值(finally块中的任何非return操作都不会影响到try中的return值)。、
个人总结:
为什么会有3个输出
1.new B().getValue()有两个输出
new B(),首先调用父类构造函数,在调用自己的构造函数。会输出一次System.out.println(value);
getValue()时会调用A的getValue()函数,输出一次System.out.println(value);
2.System.out.println(new B().getValue())会输出一次
执行完new B().getValue(),会return一个value=17
- Java中父类和子类中的方法调用和参数传递总结
- Java中父类和子类中的方法调用和参数传递探讨
- 在java中父类调用子类中的方法
- List 泛型,传递参数为子类,调用方法接收为父类问题总结
- 构造方法和参数传递总结
- Java中的值传递和引用传递(参数传递)
- java中父类和子类构造调用方式
- Java中的变量赋值和参数传递
- Java和C++中的参数传递
- Java中的参数传递问题和图解
- 子类调用父类方法:c++和java的不同
- 使用Java的子类调用构造方法super()和this()
- Java父、子类成员变量和方法的调用关系
- java子类如何调用父类变量和方法
- Java 方法参数的值传递和引用传递
- pb中父类动态调用子类的函数和事件方法
- Java的方法的参数传递,值传递和引用传递还有String字符串传递
- JAVA中函数调用参数传递的理解(值传递和引用传递的理解)
- 归并排序算法(Java实现)
- git 变基报错git-am is in progress
- PBRT读书笔记(一)
- 归并排序 -JAVA详解
- 使用zabbix3.2监控apache
- Java中父类和子类中的方法调用和参数传递总结
- Java
- super的使用归纳
- BGL使用dijkstra计算图的最短路径
- 大数据增量同步实现方案
- 机器学习套路
- 哈希查找效率及应用场景
- 系统吞吐量(TPS)、用户并发量、性能测试概念和公式
- 优化分享2