黑马程序员技术交流社区

标题: 这个程序的运行顺序 为什么是这样!! [打印本页]

作者: 罗胜华    时间: 2013-3-27 00:30
标题: 这个程序的运行顺序 为什么是这样!!
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 09:59

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");
                }
}
这个类里面的代码了;







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2