最近对自己的一些小毛病越来越不能容忍了,喝喝~与其说是不能容忍,倒不如说那些毛病已经开始阻碍到自己正常的工作与学习。除了熬夜、工作有点拖沓外,还有个就是学习不做记录,当脑海中暂时理顺了思路,觉得自己理解了,就以为自己掌握了。一觉醒来忘得七七八八,过几天再遇到又是从头学起,想想的确挺恶心的。
在骑着蜗牛向前跑的路上,一点点记录,积累,不断迭代..........
这是第一次在简书上写文章,选择简书只是因为它的简约,我一贯比较喜欢的风格。貌似有点跑偏了,哈哈,切入正题。
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方法,一直往下执行。