讲解在代码中:
package 类执行顺序;
/**
* java类执行顺序
*
* 1、如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块
* 2、如果类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块
* 3、将类的成员赋予初值(原始类型的成员的值为规定值,例如int型为0,float型为0.0f,boolean型为false;对象类型的初始值为null)
* 4、如果构造方法中存在this()调用(可以是其它带参数的this()调用)则执行之,执行完毕后进入第7步继续执行,如果没有this调用则进行下一步。(这个有可能存在递归调用其它的构造方法)
* 5、执行显式的super()调用(可以是其它带参数的super()调用)或者隐式的super()调用(缺省构造方法),此步骤又进入一个父类的构造过程并一直上推至Object对象的构造。
* 6、执行类申明中的成员赋值和初始化块。
* 7、执行构造方法中的其它语句。
* */
public class SonClass extends FatherClass{
{
System.out.println("SonClass中初始化代码块");
}
static {
System.out.println("SonClass中static初始化代码块");
}
public SonClass() {
// TODO Auto-generated constructor stub
System.out.println("SonClass中构造方法");
}
public static void main(String[] args) {
//FatherClass class1 = new FatherClass();
SonClass class2 = new SonClass();
}
}
package 类执行顺序;
public class FatherClass {
{
System.out.println("FatherClass的初始化块");
}
static {
System.out.println("FatherClass中static初始化代码块");
}
public FatherClass() {
// TODO Auto-generated constructor stub
System.out.println("FatherClass的构造方法");
}
}