A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李易烜 中级黑马   /  2013-3-13 22:52  /  1640 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 猫腻 于 2013-3-14 09:47 编辑

子类对象的构造和初始化顺序?

3 个回复

倒序浏览
静态代码块》构造函数》一般方法
静态代码快先于对象对象存在用于给类初始化
构造函数用于给对象初始化
回复 使用道具 举报
1。对属性进行默认初始化;

2。绑定特定参数的构造函数,此时并没有执行构造函数的方法体;

3。如果构造函数中存在this()调用,则跳到本类相应重载的构造函数,跳到2),执行

完毕之后返回到当前构造函数,当前构造函数执行第5)步。

4。隐式或显示的调用父类的构造函数(因为父类的成员必须由父类的构造函数完成初始化),父类的构造函数又从2)开始执行流程,执行完毕之后返回到当前构造函数。

5。执行构造函数中的方法体;

6。如果存在游离块则优于构造函数执行。

注:

在子类的构造函数中不允许同时存在this()和Super()调用。

在构造子类对象时,父类的构造函数总是隐式或显式被调用。

没有继承关系的类的对象的创建与初始化:

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
我觉得这个问题,你应该自己去运行试试,远比别人直接告诉你更好
你可以把这些放入子类和父类的代码(把隐式的构造函数还有super都写出来,这样有助于你看到运行结果分析结论)
静态代码块(如果有,最先执行,且每个静态代码块只执行一次,比如说父类有两个静态,子类也有两个,那么要先把父类的两个运行完才运行子类的两个)

构造代码块(如果有,那么就在静态代码块之后执行)

父类构造函数(构造代码块执行完了就执行他,他的第一行也有一个隐式的super(),因为Object是所有类的父类)

子类构造函数(最后才是子类的构造函数,他第一行有个隐式的super())

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马