关于java中创建一个对象的代码执行过程

Java创建对象的代码执行顺序

相信大家在创建一个对象时都会这整个过程中类中的代码如何执行产生疑问,下面我们就用如下代码来测试一下在创建一个对象的时候执行的过程和顺序是什么样的.

public class Main extends F{  //声明子类Main继承雨父类F
	Main(){
		System.out.println("子类构造方法");
	}
	static {System.out.println("这是子类静态代码块");}
	{System.out.println("这是子类普通代码块");}
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
         new Main();   //创建一个子类对象
	}

}

class F {
	F(){
		System.out.println("父类构造方法");
	}
	static {System.out.println("这是父类静态代码块");}
	{System.out.println("这是父类普通代码块");}
}
 

在这里插入图片描述从上图输出结果我们可以看到Java在创建一个对象时的代码执行顺序为:
(一)从修饰符来分析:
1. 静态:首先执行的是静态的代码区域,先是执行父类的静态代码块,然后是子类的静态代码块.(注:代码块包括类的成员变量和方法)
2. 普通代码块(包括构造方法):图中显示可知先是执行了父类的普通代码块(包括父类构造函数),再执行子类的普通代码块(包括父类构造方法)

(二)从父类子类分析:
在权重相同的情况下先执行父类的代码,在执行子类的代码.
如:
同样是静态代码,则先执行父类静态,在执行子类的静态代码.
同样是普通代码.,先执行父类的普通方法(包括构造方法),再执行子类的普通代码(包括构造方法).

最后小结:
在权重上(优先级):静态(static)的>普通的(非静态的,即没有static修饰的)

在上述权重(优先级)相同时,先执行父类代码,在执行子类代码
同时,对同样是普通代码,构造方法总是最后执行.

即先静态(先父类再子类),再普通(先父类再子类),其中的普通代码构造函数最后执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lqy5679

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值