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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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


import org.omg.Messaging.SyncScopeHelper;

public class Demo5 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
        //分析:
                //分析                                                                        输出结果
                //调用子类之前会先调用父类的静态方法                                 静态代码块Fu
                //调用自身的静态方法                                                        静态代码块Zi
                //在然后调用自身的构造方法,  调用子类构造方法之前有super();调用父类的构造方法,
                //因为java中是分层初始化的,先初始化父类,再初始化子类,所以先走的父类构造,但是在执行
                //父类构造时,发现父类有构造代码块,构造代码块是优先于构造方法执行的所以输出
                                                                                          //构造代码块Fu
                //输出父类的构造方法                                                  //构造方法Fu
                //输出子类的构造代码块                                          //构造代码块Zi
                //输出子类的构造方法                                                  //构造方法Zi
                Zi zi = 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() {
                //super();                                                //构造方法运行子类的构造方法之前要先走父类的构造方法
                                                                               
                System.out.println("构造方法Zi");
        }
}

0 个回复

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