一道题说明java初始化顺序

之前,在公司内部给大家做了java培训后,要考一考大家,关于初始化方面,想了一个综合涵盖继承、静态等各个方面的代码。

题目

说出下面程序运行结果:

class Language {

	static {
		System.out.println("language static block");
	}

	{
		System.out.println("language block");
	}

	public Language() {
		System.out.println("language constructor");
	}

	public Language(String name) {
		System.out.println(name);
	}

}

public class Python extends Language {

	private String name;

	public Python(String name) {
		this.name = name;
		System.out.println("python constructor");
		System.out.println(this.name);
	}

	{
		System.out.println("python block");
	}

	static {
		System.out.println("python static block");
	}

	public static void main(String[] args) {
		new Python("hello python");
	}

答案

language static block
python static block
language block
language constructor
python block
python constructor
hello python