Java 类初始化顺序为
1、父类静态字段初始化
2、子类静态字段初始化
3、父类普通字段初始化
4、父类构造器执行
5、子类普通字段初始化
6、
子类构造器执行
-
import java.util.Random;
-
-
public class InitOrder {
-
public static int getInt(String info){
-
System.out.println(info);
-
Random random = new Random(47);
-
return random.nextInt();
-
}
-
public static void main(String [] args){
-
new Son();
-
// 关注 Father 的 filed 与 Son 的sonFiled的初始化
-
}
-
}
-
-
class Son extends Father{
-
private int sonFiled = InitOrder.getInt("子类普通字段初始化");
-
private static int sonStaticFiled = InitOrder.getInt("子类静态字段初始化");
-
public Son(){
-
this.sonFiled = InitOrder.getInt("子类构造器执行");
-
}
-
public int getSonFiled() {
-
return sonFiled;
-
}
-
public void setSonFiled(int sonFiled) {
-
this.sonFiled = sonFiled;
-
}
-
public static int getSonStaticFiled() {
-
return sonStaticFiled;
-
}
-
public static void setSonStaticFiled(int sonStaticFiled) {
-
Son.sonStaticFiled = sonStaticFiled;
-
}
-
-
-
}
-
class Father{
-
private int filed = InitOrder.getInt("父类普通字段初始化");
-
private static int staticFiled = InitOrder.getInt("父类静态字段初始化");
-
public Father(){
-
this.filed = InitOrder.getInt("父类构造器执行");
-
}
-
public int getFiled() {
-
return filed;
-
}
-
public void setFiled(int filed) {
-
this.filed = filed;
-
}
-
public static int getStaticFiled() {
-
return staticFiled;
-
}
-
public static void setStaticFiled(int staticFiled) {
-
Father.staticFiled = staticFiled;
-
}
-
-
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30066956/viewspace-1773078/
,如需转载,请注明出处,否则将追究法律责任。