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

代码
  1. class X {
  2.         Y b = new Y();
  3.         X() {
  4.                         System.out.print("X");
  5.         }
  6. }

  7. class Y {
  8.         Y() {
  9.                         System.out.print("Y");
  10.         }
  11. }

  12. public class Z extends X {
  13.         Y y = new Y();
  14.         Z() {
  15.                         System.out.print("Z");
  16.         }

  17.         public static void main(String[] args) {
  18.                         new Z();
  19.         }
  20. }
复制代码

输出是:YXYZ,不太明白为什么这样输出

28 个回复

正序浏览
学习了  原来我理解的不一样啊。。。
回复 使用道具 举报
来围观了~~~
回复 使用道具 举报
受教了,大神
回复 使用道具 举报
哎呀,真心受教,都是大神呀
回复 使用道具 举报
王建伟 发表于 2015-5-19 00:09
这牵扯到JVM的运行流程,大致流程是这样的:
(流程1)先初始化静态:先父静态,再子静态;
(流程2)先父 ...

我去,天天受教,辛苦呀
回复 使用道具 举报
不能不改变 发表于 2015-5-18 22:05
成员变量的初始化在构造方法之前么。。。唉都忘光了 = =

类中成员变量的初始化是在构造方法之前,与先后顺序无关
回复 使用道具 举报
这是在继承关系中,子类对象实例化过程?
回复 使用道具 举报

不错,学习了
回复 使用道具 举报
很经典的题目啊,留名学习!
回复 使用道具 举报
guoyangpeng 来自手机 中级黑马 2015-5-19 07:37:07
19#
学习了!赞一个
回复 使用道具 举报
姬光普 发表于 2015-5-19 00:22
我的技术分真心不多,惭愧,我来论坛几天了,是用赚的黑马币兑换的,还有周末的技术答题,那个是直接给的 ...

我注册三天吧,那个题目我也答了得了三分要不然还是2分呢,哈哈,楼主你准备走哪期啊?哪个方向?
回复 使用道具 举报
这个是考谁先运行的问题,我也忘了顺序
回复 使用道具 举报
王建伟 发表于 2015-5-19 00:18
客气了,楼主这么高的技术分了啊,我才五分,哎,不知道什么时候才能挣到足够的分 ...

我的技术分真心不多,惭愧,我来论坛几天了,是用赚的黑马币兑换的,还有周末的技术答题,那个是直接给的技术分
回复 使用道具 举报
姬光普 发表于 2015-5-19 00:15
嗯嗯。确实是这样的,真的非常感谢

客气了,楼主这么高的技术分了啊,我才五分,哎,不知道什么时候才能挣到足够的分
回复 使用道具 举报
王建伟 发表于 2015-5-19 00:09
这牵扯到JVM的运行流程,大致流程是这样的:
(流程1)先初始化静态:先父静态,再子静态;
(流程2)先父 ...

嗯嗯。确实是这样的,真的非常感谢:)
回复 使用道具 举报
这牵扯到JVM的运行流程,大致流程是这样的:
(流程1)先初始化静态:先父静态,再子静态;
(流程2)先父后子,先父的全部,然后子的全部;
(3)优先级:父类大于子类。静态代码块>非静态代码块>构造函数(与位置的前后无关)。
知道了上面的规则,然后分析:
1、程序以main()为入口,new Z();jvm查看程序发现没有静态变量或者静态代码块(流程1),此时就会想要调用类Z的构造函数进行进行初始化,然后发现Z是有父类的,这时候就(流程2)初始化父类的全部,程序上下执行,执行类X的 Y b = new Y();然后就调用了
类Y的构造器,输出了Y;
2、然后还是(流程2)未完的构造函数,此时输出X,此时父类的所有东西已经初始化完成了;
3、接着还是(流程2)执行子类Z的Y y = new Y(); 此时输出Y;
4、还是(流程2)执行子类的构造函数,输出Z
楼主可以试试断点调试,验证一下。是不是这样的流程的。
回复 使用道具 举报 3 0
不错,学习了
回复 使用道具 举报
确实有点迷惑性。。
回复 使用道具 举报
gaoer 中级黑马 2015-5-18 22:15:48
10#
学到了 。, 好蛋疼的赶脚
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马