验证程序:
/**
*
*/
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
子类初始化
子类构造器
说明:
运行时先执行父类的静态初始化,在执行子类的静态初始化,在执行父类的变量初始化,在执行父类的构造方法,在执行子类的变量初始化最后执行子类的构造方法
/**
*
*/
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
子类初始化
子类构造器
说明:
运行时先执行父类的静态初始化,在执行子类的静态初始化,在执行父类的变量初始化,在执行父类的构造方法,在执行子类的变量初始化最后执行子类的构造方法