 |
|
songkaizong
V2EX member #302357, joined on 2018-03-22 10:45:41 +08:00
|
 |
Per songkaizong's settings, the topics list is hidden |
Deals info, including closed deals, is not hidden
songkaizong's recent replies
这道题出自《深入理解 Java 虚拟机》 8.3 小节。
为了加深理解,笔者又编撰了一份“劣质面试题式”的代码片段,请阅读代码清单 8-10,思考运行后会输出什么结果。
输出两句都是“I am Son”,这是因为 Son 类在创建的时候,首先隐式调用了 Father 的构造函数,而
Father 构造函数中对 showMeTheMoney()的调用是一次虚方法调用,实际执行的版本是
Son::showMeTheMoney()方法,所以输出的是“I am Son”,这点经过前面的分析相信读者是没有疑问的
了。而这时候虽然父类的 money 字段已经被初始化成 2 了,但 Son::showMeTheMoney()方法中访问的却
是子类的 money 字段,这时候结果自然还是 0,因为它要到子类的构造函数执行时才会被初始化。
cherry mx 8.0 直接用清水冲,晒干接着用。