/**
*
*/
package com.test;
/**
* @author lihai
* @createdtime 2018-5-7 下午11:22:03
* @类描述 类的初始化顺序
*
* 对于静态变量、静态初始化块、变量、初始化块、构造器,
* 它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
*
* 并不是父类完全初始化完毕后才进行子类的初始化,实际上子类的静态变量和静态初始
* 化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成了。
*
* 主程序类中的的静态变量先于静态代码块初始化,其后进入主函数类(程序入口处),其
* 后根据静态函数的调用情况,才能选择性的初始化。
*
*
*/
public class ClassLoader {
/**
* @param args
*/
public static void main(String[] args) {
B b = new B();
}
}
class A{
//static int a=5;
{
System.out.println("3.A的初始化块");
}
A(){
System.out.println("4.A的无参构造方法");
}
static{
System.out.println("1.A的静态方法");
}
}
class B extends A{
//static int b=10;
B(){
System.out.println("6.B的无参构造方法");
}
static{
System.out.println("2.B的静态方法");
}
{
System.out.println("5.B的初始化块");
}
}