<span style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">public class Base {
Base() {
preProcess();
}
void preProcess() {
}
}
public class Derived extends Base {
public String whenAmISet = "set when declared";
@Override
void preProcess() {
whenAmISet = "set in preProcess";
}
public static void main(String[] args) {
Derived d = new Derived();
System.out.println(d.whenAmISet);
}
}
<span style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; background-color: rgb(255, 255, 255);">上面的程序运行后输出些什么?关键在于对类加载的理解,其中父类构造器里调用preProcess方法的对象的this指向的是哪个对象,还是挺有意思的。</span>
有两个链接可供观看:
http://my.oschina.net/kalo/blog/323078
http://my.oschina.net/kalo/blog/333202