黑马程序员技术交流社区

标题: 代码块 [打印本页]

作者: lts0616    时间: 2015-12-6 20:19
标题: 代码块

class Fu {
        static {
                System.out.println("静态代码块Fu");
        }

        {
                System.out.println("构造代码块Fu");
        }

        public Fu() {
                System.out.println("构造方法Fu");
        }
}

class Zi extends Fu {
        static {
                System.out.println("静态代码块Zi");
        }

        {
                System.out.println("构造代码块Zi");
        }

        public Zi() {
                System.out.println("构造方法Zi");
        }
}

class ExtendsTest2 {
        public static void main(String[] args) {
                Zi z = new Zi();
        }
}

静态代码块Fu
                静态代码块Zi
                构造代码块Fu
                构造方法Fu
                构造代码块Zi
                构造方法Zi
*/
打印的顺序为什么是这个?不是静态代码块>>构造代码块>>构造方法吗
作者: xiaoaonuanhu    时间: 2015-12-6 20:30
是啊,静态代码块随着类的产生而产生,构造代码块在对象执行的 时候执行了,但是要先执行父类。所以是这个结果的。
作者: bbaijiajinger    时间: 2015-12-6 21:46
要对父类进行出初始化,然后才对子类进行初始化
作者: 高云    时间: 2015-12-6 21:54
对,静态代码块随着类加载的,子类继承了父类的,所以先打印父类的静态代码块
作者: 吕振廷    时间: 2015-12-6 23:31
好好复习下




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