黑马程序员技术交流社区

标题: 关于继承初始化对象的顺序 [打印本页]

作者: 没有翅膀的小鸟    时间: 2014-7-10 12:57
标题: 关于继承初始化对象的顺序
一.当类之间有继承关系后,创建对象时初始化的顺序如下
1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
4. 父类构造方法
5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
6. 子类构造方法
class X
{       
     //父类的实例成员,执行优先为第3
    Y b=new Y(1);
    X()
      {
        //接下来就调用父类构造函数,执行优先为第4
          System.out.print("X");
       }
      class Y
          {
                 Y()
                   {
                           System.out.print("Y");
                    }
                  Y(int a)
                  {
                    System.out.print("A");
                   }
            }
}
class Z extends X
{
        //子类实例成员被执行,执行优先为第5
        Y y=new Y();
        Z()
        {
                //最后才执行子类构造方法,执行优先第6
                System.out.print("Z");
        }
        public static void main(String[] args)
        {
                Z z=new Z();
        }
}
按照上面的规则打印的就是 A X Y Z






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