黑马程序员技术交流社区

标题: 求助:关于创建子类对象时各段代码是如何被调用的 [打印本页]

作者: 蔡增辉    时间: 2013-5-11 16:11
标题: 求助:关于创建子类对象时各段代码是如何被调用的
本帖最后由 蔡增辉 于 2013-5-11 23:10 编辑

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

已知执行结果为:ADBCEF

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

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

更新后代码.PNG

作者: 蔡增辉    时间: 2013-5-11 16:33
尹桥印 发表于 2013-5-11 16:17
我是沙发
首先你要明确:因为子类继承父类,首先这两个类都要初始化吧,而且父类要先初始化,就执行静态代 ...

嗯,这个解释是从概念上的,
我想问的是这个执行顺序怎么通过代码给串联起来?也就是通过代码的执行怎么一步步调用的?
作者: 徐启坤    时间: 2013-5-11 18:03
构造代码块只有在类被实例化的时候才会被调用,可以重载,根据实例化时传入的参数调用相应的构造函数,
如果此类有父类,并且在构造函数中调用了super()函数,那么会先调用父类的构造函数,然后执行子类的构造函数。
作者: 杨修    时间: 2013-5-11 22:52
你好,按顺序把过程来理解下吧:
首先,一个程序中运行,首先是先加载类,此时就需要(使用静态代码块)先对类进行初始化;
接下来就是在类的基础上建立对象,此时::先(初始化代码块,也称构造代码块)对所有对象进行初始化;
再接下来就是(使用构造器)对你建立的具体的那个真实对象进行初始化;
整个过程理解下吧。用图说明下吧:
static//静态代码块,给类初始化
{
}
//构造代码块,给所有对象初始化
{
}
gouzao//构造函数,给具体对象进行初始化
{
}





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