示例代码(From Java SE 6.0 编程指南):
-
class MyClassFather
-
{
-
public MyClassFather()
-
{
-
System.out.println("执行要创建对象类父类的构造器!!!");
-
}
-
}
-
-
class MyClass extends MyClassFather
-
{
-
//非静态成员
-
Unstatic u=new Unstatic();
-
final UnstaticFinal uf=new UnstaticFinal();
-
{
-
System.out.println("执行非静态语句块!!!");
-
}
-
//静态成员
-
static
-
{
-
System.out.println("执行静态语句块!!!");
-
}
-
static final StaticFinal sf=new StaticFinal();
-
static Static s=new Static();
-
//类构造器
-
MyClass()
-
{
-
System.out.println("执行要创建对象类的构造器!!!");
-
}
-
}
-
//用来打印类静态final的成员变量的类
-
class StaticFinal
-
{
-
StaticFinal()
-
{
-
System.out.println("静态final的成员变量初始化!!!");
-
}
-
}
-
//用来打印类静态非final的成员变量的类
-
class Static
-
{
-
Static()
-
{
-
System.out.println("静态非final的成员变量初始化!!!");
-
}
-
}
-
//用来打印类非静态final的成员变量的类
-
class UnstaticFinal
-
{
-
UnstaticFinal()
-
{
-
System.out.println("非静态final的成员变量初始化!!!");
-
}
-
}
-
//用来打印类非静态非final的成员变量的类
-
class Unstatic
-
{
-
Unstatic()
-
{
-
System.out.println("非静态非final的成员变量初始化!!!");
-
}
-
}
-
public class Sample10_16
-
{
-
public static void main(String[] args)
-
{
-
//创建对象
-
new MyClass();
-
}
-
}
output:
执行静态语句块!!!
静态final的成员变量初始化!!!
静态非final的成员变量初始化!!!
执行要创建对象类父类的构造器!!!
非静态非final的成员变量初始化!!!
非静态final的成员变量初始化!!!
执行非静态语句块!!!
执行要创建对象类的构造器!!!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Java程序在执行过程中,类,对象,以及他们成员函数加载,初始化的顺序——
当创建一个对象时:
1.首先加载创建兑现的类机器直接与间接父类。
2.在类加载的同时,加载静态成员,包括静态成员的初始化,静态语句的执行(按先后顺序)
3.类加载完成后,开始创建对象,先加载非静态成员,(包括非静态成员的初始化,和非静态语句块的顺序执行)
4.最后执行构造器,对象生成。
阅读(941) | 评论(0) | 转发(0) |