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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class X {
        Y b = new Y();
        X() {
                        System.out.print("X");
        }
}

class Y {
        Y() {
                        System.out.print("Y");
        }
}

public class Z extends X {
        Y y = new Y();
        Z() {
                        System.out.print("Z");
        }

        public static void main(String[] args) {
                        new Z();
        }
}
new Z(); 的时候,不是先走Z(),Z中先运行 X()  打印X先吗,为什么结果是Y先啊!!!!!

点评

如果你的问题已经得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,谢谢!  发表于 2013-3-27 10:53

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1 新手奖励一分

查看全部评分

2 个回复

倒序浏览

class X
{
        Y b = new Y();
        X() {
     System.out.print("X");
        }
}

class Y
{
        Y() {
                System.out.print("Y");
                }
}

public class Z extends X {
   Y y = new Y();
    Z() {
        System.out.print("Z");
      }

public static void main(String[] args) {
          new Z();
         }
}
//  new Z();的时候,不是先走Z(),Z中先运行 X()  打印X先吗,为什么结果是Y先啊!!!!!

因为你创建 new Z()对象的时候,运行 Y y = new Y();这句代码,这句代码在创建new Y对象,所以就先执行class Y
{
        Y() {
                System.out.print("Y");
                }
}
这个类里面的代码了;


评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马