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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zzw777 中级黑马   /  2016-6-21 11:38  /  542 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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");
        }
}

我想问的是,关于这道题   构造代码块Fu ,构造方法Fu,构造代码块Zi,构造方法Zi,   老师讲的时候说的是fu类先于zi类进行初始化,所以输出顺序是 构造代码块Fu ,构造方法Fu,构造代码块Zi,构造方法Zi, 但是按照之前的一个也是继承的程序的讲法来看, 当主方法中创建对象 Zi z = new Zi(); 时,不是应该先执行Zi类构造代码块,然后执行Zi类构造方法,在Zi类构造方法的一句 是 super(); 因此去执行Fu类的构造代码块,和构造方法.  所以最后的输出结果不应该是   构造代码块Zi,构造代码块Fu ,构造方法Fu,构造方法Zi,   吗?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马