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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谭培龙 初级黑马   /  2012-8-4 13:20  /  1279 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class A
  2. {
  3.         B b = new B();
  4.         A()
  5.         {
  6.                 System.out.print("A");
  7.         }
  8.        
  9.        
  10. }

  11. class B
  12. {
  13.         B()
  14.         {
  15.                 System.out.print("B");
  16.         }
  17.         static
  18.         {
  19.                 System.out.print("静态代码块");
  20.         }
  21. }


  22. class C extends A
  23. {
  24.         B b = new B();
  25.         C()
  26.         {
  27.                 System.out.print("C");
  28.         }

  29.         public static void main(String[] args)
  30.         {
  31.                 new C();
  32.         }
  33. }
复制代码
有没有大神说说这个代码的执行顺序?
为什么父类A的newB会优先于构造函数执行?

评分

参与人数 1技术分 +1 收起 理由
田建 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
本帖最后由 郑文博 于 2012-8-4 14:33 编辑
  1. class A
  2. {
  3.         B b = new B();//3)此处初始化B,则通过B类构造函数初始化输出“B”,
  4.                 //4)然后向下执行对本父类初始化,通过本类构造函数初始化输出“A”
  5.                 //父类执行完毕继续子类代码,即27行
  6.         A()
  7.         {
  8.                 System.out.print("A");
  9.         }        
  10. }

  11. class B
  12. {
  13.         B()
  14.         {
  15.                 System.out.print("B");
  16.         }
  17.         static
  18.         {
  19.                 System.out.print("静态代码块");
  20.                                 //1)静态代码块先于对象执行,类存在时变执行。首先执行。
  21.         }
  22. }

  23. class C extends A
  24. {
  25.         B b = new B();/5)初始化B类,输出“B”,继续下面代码初始化,输出“C”
  26.         C()
  27.         {
  28.                 System.out.print("C");
  29.         }
  30.         public static void main(String[] args)
  31.                 //2)jvm在main函数开始向下执行,36行中初始化本类,由于本类继承了A,
  32.                 //则分别对其子父类构造方法初始化,A类中方法先执行,返回第3行代码
  33.         {
  34.                 new C();
  35.         }
  36. }
复制代码
此程序执行流程便为,代码中给出的注释序号1)->2)->3)->4)->5),输出结果为:静态代码块BABC
希望能帮到楼主。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上回答很好
回复 使用道具 举报
问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马