父子类中静态方法、构造代码块、构造方法的执行顺序

本文通过一个Java面试题示例,解析了在Java中类的初始化顺序,包括静态方法、构造方法和普通方法等的执行流程。重点讲解了父类与子类在这些方法上的执行顺序。

面试中做笔试题经常会考察父子类中各种方法的执行顺序,示例是其中一个面试题:

public class A {
	public int i = method();
	public static int  j = method2();
	public int k = 0;
	public A() {
		System.out.println(1);
	}
	private int method() {
		System.out.println(2);
		return 2;
	}
	private static int method2() {
		System.out.println(3);
		return 3;
	}

}

public class B extends A{

	public static int n = method4();
	public int t = 0;
	public int m = method3();
	public B() {
		System.out.println(4);
	}
	private int method3() {
		System.out.println(5);
		return 5;
	}
	private static int method4() {
		System.out.println(6);
		return 6;
	}
	public static void main(String[] args) {
		System.out.println(7);
		A a = new B();
	}
}

本题让输出程序的执行结果。

这道题考察了,静态方法、构造方法、普通方法、继承的相关知识;首先,在类中静态代码块最先被执行,因为静态方法在类被jvm加载的时候就会被执行;之后就是非静态方法(构造代码块)执行,因为非静态方法是属于对象的,对象创建后就会优先加载调用;之后调用构造方法,构造方法在对象创建后,非静态方法之后调用。

所以,父子类中静态方法、构造代码块、构造方法的执行顺序为 :父类静态方法>子类静态方法父>父类构造代码块>父类构造方法>子类构造代码块>子类构造方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值