黑马程序员技术交流社区

标题: 构造代码块和静态代码块被继承的时候它们在内存中的加载 [打印本页]

作者: 薛波    时间: 2012-3-8 10:17
标题: 构造代码块和静态代码块被继承的时候它们在内存中的加载
class  A
{
        static {System.out.println("1");}
        {System.out.println("2");}
}

class B extends A
{
        static{System.out.println("3");}
        {System.out.println("4");}

        public static void main(String[] args){
                B b = new B();
        }
}
作者: 王杰    时间: 2012-3-8 10:26
你想问什么呀。是问他们的执行顺序吗?
他们的执行顺序是:父类静态代码块>>子类静态代码块>>父类构造代码块>>父类构造函数>> 子类构造代码块>>子类构造函数。
以上代码运行结果:
1
3
2
4
作者: 吴璞玉    时间: 2012-3-8 10:47
楼上正解,静态代码块是随着类加载入内存的,所以最先被执行,而后创建子类对象时要先运行父类的构造代码块以及构造函数,之后才轮到子类的构造代码块和构造函数,而且构造代码块优先于构造函数。
作者: djx900    时间: 2012-3-8 11:11
子类第一行省略 super  对父类引用




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