java 程序的初始化一般遵循以下三个原则:
1、静态对象先于非静态对象初始化,静态对象只初始化一次,而非静态对象会初始化多次;
2、父类优先于子类进行初始化;
3、按照成员变量定义顺序进行初始化,即使变量定义布于方法定义中,它们依然在任何方法被调用之前优化;
java程序初始化工作可以在许多不同的代码块中完成,它们的顺序如下:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造方法、子类非静态变量、子类非静态代码块、子类构造方法。
例:
public class HelloB extends HelloA
{
public HelloB()
{
System.out.printIn("HelloB"); //子类构造函数
}
{
System.out.printIn(''I'm B class''); //子类非静态代码块
}
static //子类静态代码块
{
System.out.printIn("static B");
}
public static void main(String [] args)
{
new HelloB();
}
}
class HelloA
{
public HelloA()
{
System.out.printIn("HelloA"); //父类构造函数
}
{
Sytem.out.printIn("I'm A class"); //父类非静态代码块
}
static //父类静态代码块
{
System.out.printIn("static A");
}
}
输出顺序:static A
static B
I'm A class
HelloA
I'm B class
HelloB