黑马程序员技术交流社区

标题: 继承的小问题 [打印本页]

作者: 谭培龙    时间: 2012-8-4 13:20
标题: 继承的小问题
  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会优先于构造函数执行?
作者: 郑文博    时间: 2012-8-4 14:32
本帖最后由 郑文博 于 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
希望能帮到楼主。
作者: 黑马振鹏    时间: 2012-8-4 14:55
楼上回答很好
作者: 谭培龙    时间: 2012-8-4 15:19
问题已解决




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