java:类的初始化顺序

最近对自己的一些小毛病越来越不能容忍了,喝喝~与其说是不能容忍,倒不如说那些毛病已经开始阻碍到自己正常的工作与学习。除了熬夜、工作有点拖沓外,还有个就是学习不做记录,当脑海中暂时理顺了思路,觉得自己理解了,就以为自己掌握了。一觉醒来忘得七七八八,过几天再遇到又是从头学起,想想的确挺恶心的。

在骑着蜗牛向前跑的路上,一点点记录,积累,不断迭代..........

这是第一次在上写文章,选择只是因为它的简约,我一贯比较喜欢的风格。貌似有点跑偏了,哈哈,切入正题。

java的类在使用前都必须初始化,这点程序员都知道,但具体的初始化顺序我是今天才搞明白,记住三条规则就行了:

1. java的子类在执行任何操作之前,它的父类必须先被初始化。

2. 在执行子类的构造函数时,会先执行父类的构造函数。

3. 在类初始化时,先初始化成员变量,再调用构造函数。

代码说明

上面的代码很简单,Son继承了Father,在main中执行print方法。整个代码执行的流程如下:

1.先运行到第4行,new一个Son对象。

2.然后运行到22行,执行Son的构造函数。(此时Son的构造函数还未执行)

3.立刻又运行到14行,准备执行Father的构造函数。(因为初始化子类前必须先初始化父类,此时Father的构造函数也没执行)

4.然后运行到11行,执行11、12行两个成员变量初始化。(一个类先初始化成员变量,再执行构造函数。再这里系统给Father中的name和age两个变量分配了存储空间,并赋值)

5.紧接着运行到14行,执行Father的构造函数,这里是无参构造函数。(至此,父类初始化完成)

6.然后运行到19行,先初始化Son的成员变量。(这里系统仅仅为Son的成员变量分配存储空间,里面的值是默认的,没什么意义)

7.之后运行22行Son的构造函数,给Son的两个变量赋值。(至此,Son的初始化完成)

8.接下来运行第5行,执行son的print方法,一直往下执行。

你可能感兴趣的:(java:类的初始化顺序)