现在的位置: 首页 > 综合 > 正文

java类的初始化(一)

2014年09月05日 ⁄ 综合 ⁄ 共 1160字 ⁄ 字号 评论关闭

对于静态变量、静态初始化块、变量、初始化块、构造器的初始化顺序,为,((父类)静态变量、静态初始化块(排序按先后次序))>((子类)静态变量、静态初始化块(排序按先后次序))>((父类)变量、初始化块(排序按先后次序))>(父类)构造器>((子类)变量、初始化块(排序按先后次序))>(子类)构造器。

先来举例说说:

class Test
{
	static
	{
		System.out.println("父类static 块 1  执行");
	}
	static Sample staticSam1 = new Sample("父类 静态成员staticSam1初始化");
	Sample sam1 = new Sample("父类 sam1成员初始化");
	static Sample staticSam2 = new Sample("父类 静态成员staticSam2初始化");
	static
	{
		System.out.println("父类 static 块 2  执行");
	}
	{
		System.out.println("父类的普通初始化块执行");
	}

	Test()
	{
		System.out.println("父类 Test默认构造函数被调用");
	}

	Sample sam2 = new Sample("父类 sam2成员初始化");

}

class TestSub extends Test
{
	static Sample staticSamSub = new Sample("子类 静态成员staticSamSub初始化");

	TestSub()
	{
		System.out.println("子类 TestSub 默认构造函数被调用");
	}

	Sample sam1 = new Sample("子类 sam1成员初始化");
	static Sample staticSamSub1 = new Sample("子类 静态成员staticSamSub1初始化");

	static
	{
		System.out.println("子类 static 块  执行");
	}
	{
		System.out.println("子类的普通初始化块执行");
	}
	Sample sam2 = new Sample("子类 sam2成员初始化");

}

public class Init1
{
	public static void main(String[] args)
	{
		new TestSub();
	}
}

执行结果为:

父类static 块 1  执行
父类 静态成员staticSam1初始化
父类 静态成员staticSam2初始化
父类 static 块 2  执行


子类 静态成员staticSamSub初始化
子类 静态成员staticSamSub1初始化
子类 static 块  执行


父类 sam1成员初始化
父类的普通初始化块执行
父类 sam2成员初始化
父类 Test默认构造函数被调用


子类 sam1成员初始化
子类的普通初始化块执行
子类 sam2成员初始化
子类 TestSub 默认构造函数被调用


抱歉!评论已关闭.