tomcatexpert
发贴: 52
积分: 2
|
于 2006-05-14 03:38
这是一道很有趣的题目.
Constructor的执行顺序是 1. Call this() or super (),一层层叫上去,直到Object为止 2. 执行所有member attributes 的赋值. 3. 执行Constructor 内部的Code
所以,本题中当Mobile被建立时,顺序是这样的 1. Phone () 2. String device = "Mobile.device"; // Mobile 类 3. Mobile() 里面的代码
具体结果就是: 1. Phone()被呼叫时,Mobile 类的device还没被赋值,而Phone() 里的showDevice() 被Overriden,所以打印结果是 Mobile.showDevice,null 2. Mobile类的device被赋值 3. 此时再执行Mobile() 里的showDevice(),效果和在main() 方法使用n.showDevice()一样,各打印一个Mobile.showDevice,Mobile.device
推荐阅读:Thinking in Java
|