黑马程序员技术交流社区
标题: 关于继承初始化对象的顺序 [打印本页]
作者: 没有翅膀的小鸟 时间: 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 |