java类的加载顺序,静态块 非静态块 构造器的执行顺序

版权声明:茅坑的石头 https://blog.csdn.net/lishuoboy/article/details/83963781
public class Parent {
	
	static String name = "hello";

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

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

	public Parent() {
		System.out.println("parent constructor");
	}
	
}
public class Child extends Parent {
	
	static String childName = "hello";
	
	static {
		System.out.println("child static block");
	}
	
	{
		System.out.println("child block");
	}

	public Child() {
		System.out.println("child constructor");
	}
	
	public static void main(String[] args) {
		new Child();
	}
}

输出结果
在这里插入图片描述

结论:
父类静态块 → 子类静态块 → 父类块 → 父类构造器 → 子类块 → 子类构造器
java类的加载顺序,静态块 非静态块 构造器的执行顺序

注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lishuoboy/article/details/83963781
今日推荐