记一次java使用多态的对象内存分析

本文深入探讨Java中多态的应用与对象内存布局的变化,通过实例解析子类对象在父类引用中如何保持自身特性,揭示了多态下对象的真实身份及内存引用的微妙之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记一次java使用多态的对象内存分析

记一次java使用多态的对象内存分析

最近使用aop参数列表替换参数,涉及了使用多态,好久没复习基础,乍一看没看明白,记录下来

基类

在这里插入图片描述

子类

在这里插入图片描述

方法:

在这里插入图片描述

打印结果

在这里插入图片描述

知识要点:

Java中的对象进行类型提升,依然保持其原有的类型。子类强转父类,其实仍然是子类。

内存变化:

第一步(图中红圈1):

在这里插入图片描述

第二步(图中红圈2):

在这里插入图片描述

第三步(图中红圈3):

在这里插入图片描述

第四步(图中红圈4):

在这里插入图片描述

第五步(图中红圈5):

在这里插入图片描述

第六步(图中红圈6)虽然替换了数组位置,但是真实引用还是原对象0x1021

总结:经过一顿操作之后,发现数组里面的引用还是一开始的那个,只是通过调用父类方法,将userId这个属性赋值进去了,所以在最后是可以通过子类打印出userId的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值