黑马程序员技术交流社区

标题: 关于继承关系中静态代码块构,造代码块,构造方法房执行顺 [打印本页]

作者: q19871127    时间: 2015-6-12 18:10
标题: 关于继承关系中静态代码块构,造代码块,构造方法房执行顺
本帖最后由 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. 构造代码块 -- 构造方法
                  只要有子父关系,肯定先初始化父亲的数据,然后初始化子类的数据。

作者: java8023    时间: 2015-6-12 20:02
那么成员变量呢,实在构造代码块之前还是之后呢
作者: SHISY    时间: 2015-6-12 20:40
很好哦,:)
作者: q19871127    时间: 2015-6-12 20:56
java8023 发表于 2015-6-12 20:02
那么成员变量呢,实在构造代码块之前还是之后呢

成员变量在构造代码块之前  依然是先父类在子类的原则




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