代码块、构造器的运行顺序

最近复习的时候遇到一个小问题,这里将其列出来,防止以后再出现这种问题的时候能够有印象。

之前对静态代码块、代码块、构造器的运行顺序认识有一点小小的错误。这三种运行顺序是先运行静态代码块,代码块,构造器,当含有父类的时候,就先运行父类的静态代码块,再运行子类的静态代码块,接着运行父类的代码块和构造函数,再运行子类的代码块和构造函数。

但是,当构造器中有super的时候,会先运行构造器中的super部分,再运行代码块部分,再运行构造器的剩余部分。

代码示例


class Mid 
{
	static{
		System.out.println("Mid的静态初始化块");
	}
	{
		System.out.println("Mid的普通初始化块");
	}
	public Mid()
	{
		System.out.println("Mid的无参数的构造器");
	}
	public Mid(String msg)
	{
		// 通过this调用同一类中重载的构造器
		this();
		System.out.println("Mid的带参数构造器,其参数值:"
			+ msg);
	}
}
class Leaf extends Mid
{
	static{
		System.out.println("Leaf的静态初始化块");
	}
	
	public Leaf()
	{
		// 通过super调用父类中有一个字符串参数的构造器
		super("疯狂Java讲义");
		System.out.println("测试后");
		
		System.out.println("执行Leaf的构造器");
	}
	{
		
		System.out.println("Leaf的普通初始化块");
	}
}
public class Test
{
	public static void main(String[] args)
	{
		new Leaf();
		new Leaf();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值