图解Java继承内存分配


继承的基本概念:
(1)Java不支持多继承,也就是说子类至多只能有一个父类。
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。
(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。

分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量在哪里分配空间?”
1:虚拟机加载ExtendsDemo类,提取类型信息到方法区。
2:通过保存在方法区的字节码,虚拟机开始执行main方法,main方法入栈。
3:执行main方法的第一条指令,new Student(); 这句话就是给Student实例对象分配堆空间。因为Student继承Person父类,所以,虚拟机首先加载Person类到方法区,并在堆中为父类成员变量在子类空间中初始化。然后加载Student类到方法区,为Student类的成员变量分配空间并初始化默认值。将Student类的实例对象地址赋值给引用变量s。
4:接下来两条语句为成员变量赋值,由于name跟age是从父类继承而来,会被保存在子类父对象中(见图中堆中在子类实例对象中为父类成员变量分配了空间并保存了父类的引用,并没有实例化父类。),所以就根据引用变量s持有的引用找到堆中的对象(子类对象),然后给name跟age赋值。
4:调用say()方法,通过引用变量s持有的引用找到堆中的实例对象,通过实例对象持有的本类在方法区的引用,找到本类的类型信息,定位到say()方法。say()方法入栈。开始执行say()方法中的字节码。
5:say()方法执行完毕,say方法出栈,程序回到main方法,main方法执行完毕出栈,主线程消亡,虚拟机实例消亡,程序结束。

总结:相同的方法会被重写,变量没有重写之说,如果子类声明了跟父类一样的变量,那意味着子类将有两个相同名称的变量。一个存放在子类实例对象中,一个存放在父类子对象中。父类的private变量,也会被继承并且初始化在子类父对象中,只不过对外不可见。

super关键字在java中的作用是使被屏蔽的成员变量或者成员方法变为可见,或者说用来引用被屏蔽的成员变量或成员方法,super只是记录在对象内部的父类特征(属性和方法)的一个引用。啥叫被屏蔽的成员变量或成员方法?就是被子类重写了的方法和定义了跟父类相同的成员变量,由于不能被继承,所以就称作被屏蔽。
说到这里,上面提出的疑惑也就解开了。


原创文章,转载请注明出处: http://blog.csdn.net/thinking_in_android
  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
图解算法是一本以简洁、清晰的图示和文字说明来解释算法的教材,它能帮助读者更加直观地理解复杂的算法原理和实现过程。在Java网盘下载的情境下,我们可以利用图解算法来解释下载文件的过程。 首先,我们需要明确网盘下载的基本原理。当用户需要下载文件时,需要向网盘服务器发送下载请求,服务器会对请求进行处理,并将文件以数据包的形式发送到用户的电脑上。为了更好地理解这个过程,我们可以利用图解算法中的图示来展示这个交互过程,包括从发送下载请求,服务器处理请求,到文件传输的过程。 其次,我们可以通过图解算法来解释下载算法的具体实现。比如,我们可以利用图示来展示使用Java编程语言实现下载算法的代码结构和逻辑。例如,图解算法可以用来展示如何利用Java的网络编程库来发送下载请求,如何处理服务器返回的数据包,并在用户的电脑上保存文件的过程。 最后,我们可以利用图解算法来说明下载算法的性能和优化。通过图示展示算法的时间复杂度、空间复杂度和效率,让读者更好地理解算法的性能表现和如何进行性能优化。例如,可以通过图解算法来展示如何利用多线程并行下载来提升下载速度,或者如何在内存中进行缓存来减少网络数据传输的次数。 总之,图解算法可以帮助我们更加直观、深入地理解Java网盘下载的原理、实现和优化。通过图解算法的方式,读者可以更轻松地掌握这一复杂的技术,并且能够更好地运用到实际的开发中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值