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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

yujinpinh

初级黑马

  • 黑马币:36

  • 帖子:23

  • 精华:0

© yujinpinh 初级黑马   /  2015-6-13 21:02  /  517 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

此段代码注释求解
class X{
  Y b = new Y();
  X() {
   super();
   System.out.print("X");
  }
}
class Y {
  int a = 19;
  Y() {
   System.out.print("Y");
  }
}
public class Z extends X {
  Y y = new Y();
  Z() {
   super(); //此处求解为什么不访问父类的无参构造
   System.out.print("Z");
  }
  public static void main(String[] args) {
   new Z();
  }
}

12 个回复

倒序浏览
....注释是在逗我玩吧     那个就是访问父类的无参构造函数吧~~~ 嫌麻烦可以不写 反正会给你自动加上的
回复 使用道具 举报
xgd6612 发表于 2015-6-13 21:18
....注释是在逗我玩吧     那个就是访问父类的无参构造函数吧~~~ 嫌麻烦可以不写 反正会给你自动加上的 ...

结果为什么不是YXYXZ???
回复 使用道具 举报
不是 yxz?
回复 使用道具 举报
答案应该是YXYZ
回复 使用道具 举报
因为已经在之前X构造过了。super()并不能创建对象,所以不会再执行X()了。
回复 使用道具 举报 1 0

第二个Y怎么出来的~~~
回复 使用道具 举报
vilion 发表于 2015-6-13 22:42
因为已经在之前X构造过了。super()并不能创建对象,所以不会再执行X()了。

x应该没有继承y吧~~~
回复 使用道具 举报
X没有继承Y ,楼主自己好好检查下代码。
回复 使用道具 举报
xgd6612 发表于 2015-6-13 23:13
第二个Y怎么出来的~~~

X类中的Y b = new Y();
这句话就输出Y了
回复 使用道具 举报
构造函数最先执行
回复 使用道具 举报
点哪里结帖啊
回复 使用道具 举报
xgd6612 发表于 2015-6-13 23:13
第二个Y怎么出来的~~~

开始访问父类classX 得到 YX
下一步到  Y y= new Y(); 得到第二个Y
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马