断点调试来分析一道笔试题:
先说输出的结果:
相信小伙伴会有疑惑:为啥有个A?
打上断点,且跟随本憨憨断点调试看看究竟...
第一步:进入DEBUG模式
第二步:下一步竟然进入到了class A 的方法A中(这是关键!!!)
分析:因为B是A的子类,且B没有重写父类(A类)的无参构造方法A,那么意味着B是有一个与父类相同的无参构造A方法的,只是隐含起来了,所以在new B()的时候,会去加载其父类A,同时B被new出来的时候,执行了隐含(未重写)的父类的无参构造方法A,故会打印A
执行后的控制台:
接下来继续看
第三步:执行到B的无参构造
执行后的控制台:
第四步:这一行代码走完了,回到该行
第五步:开始执行下一行,走你:
第六步:直接走A的空参构造
执行后的控制台:
程序结束!
虽然不知道我的理解有没有错,但是先记录下断点保存的思路!