A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lts0616 中级黑马   /  2015-12-6 20:19  /  696 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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
*/
打印的顺序为什么是这个?不是静态代码块>>构造代码块>>构造方法吗

4 个回复

倒序浏览
是啊,静态代码块随着类的产生而产生,构造代码块在对象执行的 时候执行了,但是要先执行父类。所以是这个结果的。
回复 使用道具 举报
要对父类进行出初始化,然后才对子类进行初始化
回复 使用道具 举报
对,静态代码块随着类加载的,子类继承了父类的,所以先打印父类的静态代码块
回复 使用道具 举报
好好复习下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马