一道执行子类无参构造题目的断点调式

断点调试来分析一道笔试题:

先说输出的结果:

相信小伙伴会有疑惑:为啥有个A?
打上断点,且跟随本憨憨断点调试看看究竟...

第一步:进入DEBUG模式

第二步:下一步竟然进入到了class A 的方法A中(这是关键!!!)

分析:因为B是A的子类,且B没有重写父类(A类)的无参构造方法A,那么意味着B是有一个与父类相同的无参构造A方法的,只是隐含起来了,所以在new B()的时候,会去加载其父类A,同时B被new出来的时候,执行了隐含(未重写)的父类的无参构造方法A,故会打印A
执行后的控制台:


接下来继续看
第三步:执行到B的无参构造


执行后的控制台:


第四步:这一行代码走完了,回到该行


第五步:开始执行下一行,走你:


第六步:直接走A的空参构造


执行后的控制台:

程序结束!
虽然不知道我的理解有没有错,但是先记录下断点保存的思路!

猜你喜欢

转载自www.cnblogs.com/debuggerhu/p/13397440.html