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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© janstk 中级黑马   /  2015-2-2 15:04  /  836 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

为何父类的构造代码块会在子类的静态代码块之后执行?
  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
复制代码


3 个回复

倒序浏览
我记得之前看视频说,是因为静态代码块随着对象的建立,直接加载进静态方法区,所以会先于构造代码块执行。
回复 使用道具 举报
静态比构造先加载!!!
回复 使用道具 举报
静态代码块优先于代码块与构造函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马