Java类加载顺序
我的理解
- 静态先于非静态
- 父类先于子类
- 成员变量–>代码块–>构造方法 -->普通方法
- main()方法排在本类中静态最后
package bishi.dada;
public class LoadOrder {
private static int snum;
private int num;
static {
System.out.println("父类静态成员变量:"+snum);
System.out.println("父类静态代码块");
}
{
System.out.println("父类非静态成员变量:"+num);
System.out.println("父类非静态代码块");
}
public LoadOrder()
{
System.out.println("父类构造方法");
}
public void play()
{
System.out.println("父类普通方法");
}
public static void main(String[] args)
{
System.out.println("父类main方法");
LoadOrder2 ld2=new LoadOrder2();
ld2.play();
}
}
class LoadOrder2 extends LoadOrder
{
private static int snum2;
private int num2;
static {
System.out.println("子类静态成员变量:"+snum2);
System.out.println("子类静态代码块");
}
{
System.out.println("子类非静态成员变量:"+num2);
System.out.println("子类非静态代码块");
}
public LoadOrder2()
{
System.out.println("子类构造方法");
}
public void play()
{
System.out.println("子类普通方法");
}
public static void main(String[] args)
{
System.out.println("子类main方法");
LoadOrder2 ld2=new LoadOrder2();
ld2.play();
}
}
父类main()方法
父类静态成员变量:0
父类静态代码块
父类main方法
子类静态成员变量:0
子类静态代码块
父类非静态成员变量:0
父类非静态代码块
父类构造方法
子类非静态成员变量:0
子类非静态代码块
子类构造方法
子类普通方法
子类main()方法
父类静态成员变量:0
父类静态代码块
子类静态成员变量:0
子类静态代码块
子类main方法
父类非静态成员变量:0
父类非静态代码块
父类构造方法
子类非静态成员变量:0
子类非静态代码块
子类构造方法
子类普通方法