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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 q19871127 于 2015-6-12 18:17 编辑
  1. class Fu {
  2.                 static {
  3.                         System.out.println("静态代码块Fu");
  4.                 }

  5.                 {
  6.                         System.out.println("构造代码块Fu");
  7.                 }

  8.                 public Fu() {
  9.                         System.out.println("构造方法Fu");
  10.                 }
  11.         }

  12.         class Zi extends Fu {
  13.                 static {
  14.                         System.out.println("静态代码块Zi");
  15.                 }

  16.                 {
  17.                         System.out.println("构造代码块Zi");
  18.                 }

  19.                 public Zi() {
  20.                         System.out.println("构造方法Zi");
  21.                 }
  22.         }
  23. class Demo
  24. {
  25.         public static void main(String[] args){
  26.                 new Zi();
  27.         }
  28. }
复制代码
执行结果为:

静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi

总结:
执行顺序    1.静态代码块 (由于静态随着类的加载而执行 所以最先执行)
                 2. 构造代码块 -- 构造方法
                  只要有子父关系,肯定先初始化父亲的数据,然后初始化子类的数据。

3 个回复

倒序浏览
那么成员变量呢,实在构造代码块之前还是之后呢
回复 使用道具 举报
很好哦,:)
回复 使用道具 举报
java8023 发表于 2015-6-12 20:02
那么成员变量呢,实在构造代码块之前还是之后呢

成员变量在构造代码块之前  依然是先父类在子类的原则
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马