黑马程序员技术交流社区
标题:
一个有关对象初始化的问题
[打印本页]
作者:
流浪的风
时间:
2013-9-23 19:42
标题:
一个有关对象初始化的问题
本帖最后由 流浪的风 于 2013-9-23 20:46 编辑
public class Fu {
Fu(){
}
Fu(String s){
}
}
class Zi extends Fu{
Zi(){}
Zi(int a){
//super();
this();//这样的话要想创建这个类的对象还会找父类吗?this()和super()都要放在第一行执行
}
}
作者:
黑马-马磊
时间:
2013-9-23 19:50
希望在加深了解关于注释的含义和作用!
super()和this()不能同时出现
super初始化父类
this初始化子类
都初始化了同名成员变量和方法该向谁看齐,所以不能同时出现
(这个是个人的理解解释)
作者:
yting_xmei1129
时间:
2013-9-23 19:57
刚看到楼主提的问题,然后饿把搂住的代码修改了下,加了几行测试代码--->
public class Fu {
Fu() {
System.out.println("fu");
}
Fu(String s) {
}
public static void main(String[] args) {
new Zi(1);
}
}
class Zi extends Fu {
Zi() {
System.out.println("zi");
}
Zi(int a) {
super();
//this();// 这样的话要想创建这个类的对象还会找父类吗?this()和super()都要放在第一行执行
}
}
super 的执行结果: fu
所以用 super(); 的话,应该就是直接创建父类对象了
this 的执行结构:fu zi
所以用 this() 的话,应该就是创建自己这个类,这里是 Zi 类对象了,Zi 类的构造方法会默认调用父类的构造方法,所以会出现 fu zi 这样的结果
希望可以帮到楼主、、、
The you smile until forever 、、、、、、、、、、、、、、、、、、、、、
作者:
晓天s
时间:
2013-9-23 20:27
在创建子类对象时先初始化父类的对象,再初始化子类;调用无参构造时先执行Zi()同时他会去找父类的Fu()同时自己挂起,在执行父类的结束后再执行,当有参的时候执行this遇到一个无参构造与上面相似
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2