java 基础 类初始化顺序

1.类初始化顺序

package hello;
public class a {
	static{
		System.out.println("静态 a");
	}
	public a() {
		System.out.println("构造函数 a");
	}
	{
		System.out.println("代码块 a");
	}
}

控制台输出结果

静态 a
a
构造函数 a

优先级:静态代码块 -> 代码块 -> 构造函数


1.子类集成初始化顺序
public class a {
	static{
		System.out.println("静态函数 a");
	}
	public a() {
		System.out.println("构造函数 a");
	}
	{
		System.out.println("代码块 a");
	}
}

class b extends a{
	static{
		System.out.println("静态函数 b");
	}
	public b() {
		System.out.println("构造函数 b");
	}
	{
		System.out.println("代码块 b");
	}
}

//测试
public static void main(String[] args) {
		a a=new b();
	}

控制台

静态函数 a
静态函数 b
代码块 a
构造函数 a
代码块 b
构造函数 b

执行顺序:
1.父类静态函数-> 2.子类静态函数 ->
3.父类代码块->4.父类构造函数->
5.子类代码块->6.子类构造函数

可以简单的把加载顺序大体分为两层:

优先级高的:
父类构造函数,子类构造函数
优先级稍低的:
父类代码块。父类构造函数,子类代码块子类构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值