黑马程序员技术交流社区

标题: 关于代码块的一个程序问题 [打印本页]

作者: zzw777    时间: 2016-6-21 11:38
标题: 关于代码块的一个程序问题
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,   吗?






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