学习笔记day09

在这里插入图片描述
1,ExtendsDemo5加载,加载构造函数。main进栈,定义局部变量z。
2,去寻找Zi类,发现Zi类继承了Fu类。加载Fu类代码在方法区。然后加载Zi类代码在方法区。这时有一个super指向Fu的代码。
3,在堆内建立new Zi 类。分配首地址值0x0034。这个Zi对象有一个num,默认初始化为0.
4,执行Zi的构造器,Zi的构造函数进栈。里面有个this= 0x0034。
5,里面有个super,指向Fu,于是Fu的构造函数进栈。
6,Fu的构造函数里的super指向Object不提。Fu的构造函数里面也有个this = 0x0034(涉及到多态,先不提)。调用show方法。这个show的this对象是0x0034,是子类对象,先找自己的show,同时,也是因为子父类函数一样,会有覆盖。这个时候num还是0。
按道理是先默认初始化,然后显示初始化,最后是构造函数初始化。但是这是没父类的情况,有父类的话要先默认初始化,然后把父类的所有包括构造函数初始化以后,再进行子类的显示初始化。构造器在显示初始化之前加载。
然后return。Fu的构造函数弹栈。
7,这时候执行显示初始化,num=8
8,Zi类运行show。然后也弹栈。第一句话完毕
9,接着调用对象z.show。在对象这个Zi类里找show。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值