黑马程序员技术交流社区

标题: 子类对象的构造和初始化顺序 [打印本页]

作者: 李易烜    时间: 2013-3-13 22:52
标题: 子类对象的构造和初始化顺序
本帖最后由 猫腻 于 2013-3-14 09:47 编辑

子类对象的构造和初始化顺序?
作者: HM汪磊    时间: 2013-3-13 22:57
静态代码块》构造函数》一般方法
静态代码快先于对象对象存在用于给类初始化
构造函数用于给对象初始化
作者: 张善颖    时间: 2013-3-13 23:02
1。对属性进行默认初始化;

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

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

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

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

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

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

注:

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

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

没有继承关系的类的对象的创建与初始化:
作者: 罗威    时间: 2013-3-13 23:16
我觉得这个问题,你应该自己去运行试试,远比别人直接告诉你更好
你可以把这些放入子类和父类的代码(把隐式的构造函数还有super都写出来,这样有助于你看到运行结果分析结论)
静态代码块(如果有,最先执行,且每个静态代码块只执行一次,比如说父类有两个静态,子类也有两个,那么要先把父类的两个运行完才运行子类的两个)

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2