面试题 - 类继承的加载顺序

题目:请给出下面程序的打印结果

public class ClassFieldInParent {
public ClassFieldInParent() {
System.out.println("ClassFieldInParent");
}
}

public class ClassParent {
public ClassFieldInParent cfip = new ClassFieldInParent();
public ClassParent() {
System.out.println("ClassParent");
}
}

public class ClassField {
public ClassField() {
System.out.println("ClassField");
}
}

public class ClassSelf extends ClassParent {
public ClassField c = new ClassField();
public ClassSelf(){
System.out.println("ClassSelf");
}

public static void main(String[] args){
new ClassSelf();
}
}

答案:

ClassFieldInParent
ClassParent
ClassField
ClassSelf

结论为:子类调用new方法时,父类首先被创建;执行父类构建子前先初始化父类的内部变量。

语句执行顺序为:父类成员变量->父类构建子->子类成员变量->子类构建子

posted @ 2012-01-31 22:22  万法自然~  阅读(298)  评论(0)    收藏  举报