黑马程序员技术交流社区

标题: 关于Java中静态代码块以及构造函数的执行先后顺序 [打印本页]

作者: 小徐_y8nUx    时间: 2015-4-5 21:54
标题: 关于Java中静态代码块以及构造函数的执行先后顺序

    对静态代码块以及构造函数的执行先后顺序,一直很迷惑,看了孙伟琴老师的《java面向对象编程》又结合毕老师的java基础视频中的讲解,现用下面的这段小程序来简明扼要的叙述一下,以加深理解,与君共勉....


                public class Fu {
                                      static {
                                            System.out.print(1);
                                                  }
                                      public Fu() {
                                             System.out.print(2);
                                                 }
                                          }
               public class Zi extends Fu {
                                       static {
                                            System.out.print("a");
                                                 }
                                       public Zi() {
                                            System.out.print("b");
                                                   }
                                           }
           public class demo {
                          public static void main(String[] args) {
                                         Fu fu = new Zi();
                                         fu = new Zi();
                                                      }
                                             }
1.
       当父类与子类都有静态代码块和构造函数的时候,执行顺序如下:
       父类静态代码块 > 子类静态代码块 java虚拟机加载类时,就会执行该块代码。
       父类构造函数 > 子类构造函数 (先有父亲,后有孩子)
       如果是多级继承关系的话,高层的父类首先执行,然后依次递减



作者: 野马奔腾    时间: 2015-4-5 22:04
结果是 2b2吗?
作者: 马士基    时间: 2015-4-5 22:22
把结果贴出来岂不更好
作者: 仅此一抹心醉    时间: 2015-4-5 22:28
赞一个。:lol
作者: 快乐ABC    时间: 2015-4-5 23:47
结果是1a2b2b
作者: 小徐_y8nUx    时间: 2015-4-9 18:25
野马奔腾 发表于 2015-4-5 22:04
结果是 2b2吗?

结果  。。。1a2b2b
作者: Sylvanas    时间: 2015-4-9 19:12
学习学习了
作者: 樱空之雪    时间: 2015-4-9 19:24
先执行静态代码块,再执行构造函数
作者: 野马奔腾    时间: 2015-4-9 21:26
小徐_y8nUx 发表于 2015-4-9 18:25
结果  。。。1a2b2b

哈哈  我多态还没学到  先了解下
作者: huanghe1103    时间: 2015-4-9 21:29
附上结果效果会更好 大家能对应的去了解
作者: 小徐_y8nUx    时间: 2015-4-9 23:44
樱空之雪 发表于 2015-4-9 19:24
先执行静态代码块,再执行构造函数

静态代码块是随着类的加载而加载,构造函数是随着对象的加载而加载




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