黑马程序员技术交流社区

标题: 又是一个类加载顺序问题 [打印本页]

作者: janstk    时间: 2015-2-2 15:04
标题: 又是一个类加载顺序问题
为何父类的构造代码块会在子类的静态代码块之后执行?
  1. public class Father {
  2.         {
  3.                 System.out.println("father constructer block");
  4.         }
  5.         static{
  6.                 System.out.println("father static block");
  7.         }
复制代码
  1. public class Child extends Father {

  2.         {
  3.                 System.out.println("children constructer block");
  4.         }
  5.         static{
  6.                 System.out.println("children static block");
  7.         }
复制代码
  1. public class Init {

  2.         public static void main(String[] args) {
  3.                 Father f_ = new Child();
  4.         }

  5.        
  6. }
复制代码

执行结果:
  1. father static block
  2. children static block
  3. father constructer block
  4. children constructer block
复制代码



作者: Rorine    时间: 2015-2-2 15:30
我记得之前看视频说,是因为静态代码块随着对象的建立,直接加载进静态方法区,所以会先于构造代码块执行。
作者: 边晓炎    时间: 2015-2-2 16:07
静态比构造先加载!!!
作者: 艺多不压身丶    时间: 2015-2-2 17:58
静态代码块优先于代码块与构造函数。




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