黑马程序员技术交流社区

标题: 多态父类引用指向子类对象的时候,构造方法是怎么调用和运行的啊?哪位大神帮忙解惑啊 [打印本页]

作者: 1026060341    时间: 2015-11-8 22:28
标题: 多态父类引用指向子类对象的时候,构造方法是怎么调用和运行的啊?哪位大神帮忙解惑啊
多态父类引用指向子类对象的时候,构造方法是怎么调用和运行的啊?哪位大神帮忙解惑啊
作者: 刘辰阳    时间: 2015-11-8 22:40
路过!!!!!!
作者: 孙建志    时间: 2015-11-8 22:42
太难了。。。。不懂
作者: 小鹿    时间: 2015-11-8 22:46
利用断点先把程序好好看一遍!
作者: ly631960324    时间: 2015-11-8 23:25
* 成员变量
        * 编译看左边(父类),运行看左边(父类)。

* 成员方法
        * 编译看左边(父类),运行看右边(子类)。

* 静态方法
        * 编译看左边(父类),运行看左边(父类)。
        * (静态和类相关,算不上重写,所以,访问还是左边的)
        * 只有非静态的成员方法,编译看左边,运行看右边
作者: chenhaiqian    时间: 2015-11-9 00:15
推荐看看老师的视频
作者: 豆豆的小幸福    时间: 2015-11-9 00:19
Fu f = new Zi(); 就那这个来说,首先加载父类.class文件,然后加载子类.class 文件,
然后调用子类构造函数,而子类构造方法首行如果没有用super有参构造指定,则有个默认的super的空参构造,
那么找到父类的空参构造,而父类空参构造方法的第一行也有super();这个默认的语句,因为所有类都有个根类Object.
然后进行父类成员变量的显示初始化,然后如果父类有构造代码块就执行构造构造代码块初始化,然后再执行父类构造方法中的方法体。
然后相当于Zi () { } 中首行super()语句执行完毕,然后进行子类的显示初始化,
接下来如果子类中有构造代码块,则执行子类的构造代码块,然后再执行子类构造方法中的方法体。
作者: 木子子木    时间: 2015-11-9 23:02
编译看左边(父类),运行看右边(子类)
作者: 1026060341    时间: 2015-11-10 21:41
豆豆的小幸福 发表于 2015-11-9 00:19
Fu f = new Zi(); 就那这个来说,首先加载父类.class文件,然后加载子类.class 文件,
然后调用子类构造函 ...

恩啊   谢谢啦
作者: 1774055019    时间: 2015-11-10 22:01
转来转去啊,感觉都晕了
作者: 会盟天下英豪    时间: 2015-11-10 23:11
父类静态块--->子类静态块--->父类初始化语句--->父类构造函数--->子类初始化语句--->子类构造器
作者: 孙建志    时间: 2015-11-19 21:32
这个还真不知道




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