子父类之间静态、构造方法、构造代码块的顺序问题

静态随着类的加载而加载,并且只加载一次。而构造代码块优先于构造方法执行,调用任意一个构造方法,都会执行构造代码块。
父类优先于子类加载
执行顺序  
  类的加载:
    1、父类的静态成员
    2、子类的静态成员
  对象的创建:
    子类构造方法中的代码执行之前,需要先执行:
      1、super()
      2、构造代码块
      3、属性显式初始化
      4、构造方法中的代码
public class 子父类之间静态与构造方法的顺序问题 {
	public static void main(String[] args) {
		new B();
	}
}
class A{
	static {
		System.out.println("A");
	}
	{
		System.out.println("这是类A的构造代码块");
	}
	public A(){
		System.out.println("A的构造方法。。。");
	}
}
class B extends A{
	
	static {
		System.out.println("B");
	}
	{
		System.out.println("这是类B的构造代码块");
	}
	int a=fun();
	public B() {
		System.out.println("这是B的构造方法。。。。");
	}
	private int fun() {
		System.out.println("这是属性赋初始值");
		return 0;
	}
}

运行结果

A
B
这是类A的构造代码块
A的构造方法。。。
这是类B的构造代码块
这是属性赋初始值
这是B的构造方法。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值