对静态代码块以及构造函数的执行先后顺序,一直很迷惑,看了孙伟琴老师的《java面向对象编程》又结合毕老师的java基础视频中的讲解,现用下面的这段小程序来简明扼要的叙述一下,以加深理解,与君共勉....
public class Fu { static {
System.out.print(1); } public Fu() {
System.out.print(2);
}
} public class Zi extends Fu { static {
System.out.print("a");
} public Zi() {
System.out.print("b");
}
} public class demo { public static void main(String[] args) {
Fu fu = new Zi();
fu = new Zi();
}
}
1.
当父类与子类都有静态代码块和构造函数的时候,执行顺序如下:
父类静态代码块 > 子类静态代码块 java虚拟机加载类时,就会执行该块代码。 父类构造函数 > 子类构造函数 (先有父亲,后有孩子) 如果是多级继承关系的话,高层的父类首先执行,然后依次递减
|