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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 蔡增辉 于 2013-5-11 23:10 编辑

请大家帮忙分析下,下面各部分代码在运行时是如何被调用的,请把基理写的清楚些,多谢!

已知执行结果为:ADBCEF

可能之前我没说清楚,更新了一下代码,其实我是想弄明白父类和子类中的构造代码块的运行时间和运行次数;
更新后的代码运行结果为:B C E F F1

更新后代码.PNG (13.27 KB, 下载次数: 1)

更新后代码.PNG

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

5 个回复

正序浏览
你好,按顺序把过程来理解下吧:
首先,一个程序中运行,首先是先加载类,此时就需要(使用静态代码块)先对类进行初始化;
接下来就是在类的基础上建立对象,此时::先(初始化代码块,也称构造代码块)对所有对象进行初始化;
再接下来就是(使用构造器)对你建立的具体的那个真实对象进行初始化;
整个过程理解下吧。用图说明下吧:
static//静态代码块,给类初始化
{
}
//构造代码块,给所有对象初始化
{
}
gouzao//构造函数,给具体对象进行初始化
{
}

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
构造代码块只有在类被实例化的时候才会被调用,可以重载,根据实例化时传入的参数调用相应的构造函数,
如果此类有父类,并且在构造函数中调用了super()函数,那么会先调用父类的构造函数,然后执行子类的构造函数。
回复 使用道具 举报
尹桥印 发表于 2013-5-11 16:17
我是沙发
首先你要明确:因为子类继承父类,首先这两个类都要初始化吧,而且父类要先初始化,就执行静态代 ...

嗯,这个解释是从概念上的,
我想问的是这个执行顺序怎么通过代码给串联起来?也就是通过代码的执行怎么一步步调用的?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马