java 多线程里调用父类方法_java中重写方法中调用父类的属性

展开全部

哥们你看好了,我和你一样也是32313133353236313431303231363533e4b893e5b19e31333363383936初学者,你的问题,也是前几天我的问题;

这玩意我在Java群里面也问过,搞了十年Java的也说不出个123来还动用了什么debug测试工具,当然这个玩意以后我们也会用到!

我告诉你步骤怎么回事:

当你newY的时候,注意,还没有产生对象的时候,就执行了一个动作就是加载CLASS文件这个动作!

class文件已加载,就开始动用分配内存的动作,懂??

3.此时分配的对象有,方法区,父类方法,和子类方法:(这里说的覆盖其实只是就近原则而已,其实没有覆盖如果你不理解,你可以看看Java内存分析)

4.还分配了成员变量,在堆里面分配,注意:(堆内存,分配了子类和父类变量其实都有的,是划分开的切记:两个类里面的i都给划分了空间)

5.此时堆内存的所有变量,都是默认值,int就是0;这个步骤称为:隐式初始化!以上是加载class后就发生的动作懂了?

6.然后子类继承了父类,父类动作必然先执行父类里面的构造函数,开始执行初始化动作

(注意:构造函数是用来初始化动作的,能给本类对象初始化,也能给子类对象初始化切记!)

7.父类,启用构造函数先把自己的i=2给赋值完毕(显示初始化动作);

就开始执行构造函数里面的其他语句;这里就是你写的那个方法display();

父类读这个方法的时候,回去方法区里面找方法,他优先找子类,如果子类没有,在找他自己的,此刻子类是有的,也称之为覆盖

(说明一下,其实父类方法也在的)

8.此刻调用的子类方法,子类里面调用了i,(此时父类的i已经是2了,但是子类i还是0,懂了?但是方法找变量的时候会优先找子类懂了?当然k也是0了)

9.父类读完你这个调用以后就会把子类所有的成员变量初始化完成,称之为(显示初始化动作,就是我们能看的见的数字)

10.如果你在new完成以后,你在调用,你会发现,都是有值的了!

11.补充下:哥们纯手工靠记忆敲打出来的;

这个是我个人纠结了好几天以后总结的,总结的不到位还请指点,有大佬指引我,遇见这问题可以先记起来,以后学到多线程,很容易就可以理解!

祝你Java越来越厉害,顺便也期望我也一样吧,呵呵!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值