java 静态初始化,动态初始化,以及构造器执行的顺序

验证程序:
/**
*
*/
package com.test;

/**
* @author Administrator
*
*/
class Prare {
    public static String pra_stic="父类--static";
    public String pra="父类-not static";
    static{
//静态初始化
System.out.println(pra_stic);
System.out.println("父类静态初始化");
    }
    {
//初始化
System.out.println(pra);
System.out.println("父类初始化");
    }
    public Prare(){
System.out.println("父类构造器");
    }
}
public class Sun extends Prare{
    public static String pra_stic="子类--static";
    public String pra="子类-not static";
    static{
//静态初始化
System.out.println(pra_stic);
System.out.println("子类静态初始化");
    }
    {
//初始化
System.out.println(pra);
System.out.println("子类初始化");
    }
    public Sun(){
System.out.println("子类构造器");
    }
    public static void main(String[] args) {
new Sun();
    }
}
输出结果:
父类--static
父类静态初始化
子类--static
子类静态初始化
父类-not static
父类初始化
父类构造器
子类-not static
子类初始化
子类构造器
说明:
运行时先执行父类的静态初始化,在执行子类的静态初始化,在执行父类的变量初始化,在执行父类的构造方法,在执行子类的变量初始化最后执行子类的构造方法

你可能感兴趣的:(java,sun)