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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梵天的梦 中级黑马   /  2014-3-13 12:30  /  1311 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梵天的梦 于 2014-3-13 12:33 编辑

如果class A extends B,A的构造方法中用super()调用了父类的构造函数, 那么在new A对象后内存中是不是同时有了A对象和B对象呀?

6 个回复

倒序浏览
  1. class B
  2. {
  3.         int num ;
  4.         B(){
  5.                 num= 60;
  6.                 System.out.println("fu run");
  7.         }
  8.         B(int  x){
  9.                 this();
  10.                 System.out.println("fu ...."+x);
  11.         }       
  12. }

  13. class A extends B{
  14.         A(){
  15.                 super(4); //子类每一个构造函数内的第一行都有一句隐式super();当调用带参数的构造函数时就不再调用无参构造函数
  16.                 System.out.println("zi run");
  17.         }
  18. }
  19. class  Demo
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 A a = new A(0);
  24.                 System.out.println(z.num);
  25.         }
  26. }
复制代码
在new A 对象之后内存中只有A对象,super()只是调用了A的父类B的空参数构造函数
请看下面对super()用法的详解

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
王浩龙 发表于 2014-3-13 12:46
在new A 对象之后内存中只有A对象,super()只是调用了A的父类B的空参数构造函数
请看下面对super()用法 ...

多谢了。。。
回复 使用道具 举报
我自己新开了帖子说了自己的理解,但是不知道是否正确,可以过来看看。
http://bbs.itheima.com/thread-109692-1-1.html
回复 使用道具 举报
当然不会,创建谁的的对象就只能有谁的对象,super语句是隐式的,默认是空参数的,他的作用是参考父类如何初始化的,就像儿子跟着父亲学本领,父亲怎么做,他就怎么做,是一个参照。
回复 使用道具 举报
楼上答得太贴切了,只有new之后才会生成对象的,super()只是会参考父类
回复 使用道具 举报
不是。你只是调用父类的构造方法。因为父类的构造方法要先执行。它要先对父类中的元素进行初始化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马