面试题 - 类继承的加载顺序
题目:请给出下面程序的打印结果
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方法时,父类首先被创建;执行父类构建子前先初始化父类的内部变量。
语句执行顺序为:父类成员变量->父类构建子->子类成员变量->子类构建子
浙公网安备 33010602011771号