2.Java类的加载顺序
父类静态字段 → 父类静态代码块 → 子类静态字段 → 子类静态代码块 → 父类成员变量 → 父类非静态代码块 → 父类非静态构造方法 → 子类成员变量 → 子类非静态代码块 → 子类构造方法
(1).父类静态字段
public static String NAME = "父类的静态字段"
(2).父类静态代码块
// 类加载的时候就会调用
// 雷加载的时候 第一次主动使用就会加载这个类,就会把他加载到方法区内存里
static{
System.out.println("静态的属性"+NAME);
System.out.println("父类的静态代码块");
}
(3).子类静态字段
public static String Name = "子类的静态字段"
(4).子类静态代码块
static{
System.out.println("静态的属性"+NAME);
System.out.println("子类的静态代码块");
}
(5).父类的成员变量
private String hobby = "泡妞";
(6).父类的非静态代码块
// 非静态代码块
{
System.out.println("父类的非静态属性"+hobby);
System.out.println("父类的非静态代码块");
}
(7).父类的构造方法
public Father(){
System.out.println("父类构造器");
}
(8).子类的成员变量
private String hobby = "电子游戏";
(9).子类的非静态代码块
// 非静态代码块
{
System.out.println("子类的非静态属性"+hobby);
System.out.println("子类的非静态代码块");
}
(10).子类的构造方法
public Son(){
System.out.println("子类构造器");
}