黑马程序员技术交流社区
标题:
子类构造函数使用super的问题
[打印本页]
作者:
梵天的梦
时间:
2014-3-13 12:30
标题:
子类构造函数使用super的问题
本帖最后由 梵天的梦 于 2014-3-13 12:33 编辑
如果class A extends B,A的构造方法中用super()调用了父类的构造函数, 那么在new A对象后内存中是不是同时有了A对象和B对象呀?
作者:
王浩龙
时间:
2014-3-13 12:46
class B
{
int num ;
B(){
num= 60;
System.out.println("fu run");
}
B(int x){
this();
System.out.println("fu ...."+x);
}
}
class A extends B{
A(){
super(4); //子类每一个构造函数内的第一行都有一句隐式super();当调用带参数的构造函数时就不再调用无参构造函数
System.out.println("zi run");
}
}
class Demo
{
public static void main(String[] args)
{
A a = new A(0);
System.out.println(z.num);
}
}
复制代码
在new A 对象之后内存中只有A对象,super()只是调用了A的父类B的空参数构造函数
请看下面对super()用法的详解
作者:
梵天的梦
时间:
2014-3-13 13:25
王浩龙 发表于 2014-3-13 12:46
在new A 对象之后内存中只有A对象,super()只是调用了A的父类B的空参数构造函数
请看下面对super()用法 ...
多谢了。。。
作者:
nicholyx
时间:
2014-3-14 12:29
我自己新开了帖子说了自己的理解,但是不知道是否正确,可以过来看看。
http://bbs.itheima.com/thread-109692-1-1.html
作者:
谜燕
时间:
2014-3-14 14:18
当然不会,创建谁的的对象就只能有谁的对象,super语句是隐式的,默认是空参数的,他的作用是参考父类如何初始化的,就像儿子跟着父亲学本领,父亲怎么做,他就怎么做,是一个参照。
作者:
1014917278
时间:
2014-3-14 14:24
楼上答得太贴切了,只有new之后才会生成对象的,super()只是会参考父类
作者:
syusikoku
时间:
2014-3-14 17:14
不是。你只是调用父类的构造方法。因为父类的构造方法要先执行。它要先对父类中的元素进行初始化
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2