终于弄懂了 写个总结在此
在new Test3().i时候 先初始化父类 父类的print()被子类重写 所以父类调用子类print() 此时子类还没有被初始化 所以子类print()的i结果为0 然后初始化Test3 打印子类i的值 最后把i新赋的值打印出来
所以是
0
30
40
如果要第一个值非0 要么把子类的i变为static 要么去掉子类的i
一句话就是 先静态后非静态 先父类再子类
还是差太远了 需要基础啊!!!!
终于弄懂了 写个总结在此
在new Test3().i时候 先初始化父类 父类的print()被子类重写 所以父类调用子类print() 此时子类还没有被初始化 所以子类print()的i结果为0 然后初始化Test3 打印子类i的值 最后把i新赋的值打印出来
所以是
0
30
40
如果要第一个值非0 要么把子类的i变为static 要么去掉子类的i
一句话就是 先静态后非静态 先父类再子类
还是差太远了 需要基础啊!!!!