父类 子类 初始化顺序

class A {
	static{ System.out.println(" A 的静态块"); }
	{ System.out.println(" A 的 非 静态块"); }
	public A(){ System.out.println(" A 的构造方法"); }
	public static void Astatic(){ System.out.println(" A 的静态方法"); }
}

class B extends A{
	static{ System.out.println(" B 的静态块"); }
	{ System.out.println(" B 的 非 静态块"); }
	public B(){ System.out.println(" B 的构造方法"); }
	public static void Astatic(){ System.out.println(" B 的静态方法"); }
}

public class T {
	public static void main(String[] args) {
		System.out.println("````````` A ab = new B();```````````````");
		A ab = new B();
		System.out.println("````````` B b = new B();```````````````");
		B b = new B();
		System.out.println("````````` A a = new A();```````````````");
		A a = new A();
	}
}


结果 :

````````` A ab = new B();```````````````
 A 的静态块
 B 的静态块
 A 的 非 静态块
 A 的构造方法
 B 的 非 静态块
 B 的构造方法
````````` B b = new B();```````````````
 A 的 非 静态块
 A 的构造方法
 B 的 非 静态块
 B 的构造方法
````````` A a = new A();```````````````
 A 的 非 静态块
 A 的构造方法


其它文章 :  http://hi.baidu.com/injava/item/080b5d5e34890d12abf6d711

你可能感兴趣的:(父类 子类 初始化顺序)