关于Java继承中子类对象赋值给父类对象之后类型问题以及getClass()方法返回值的问题

前言

今天在复习Java的时候无意间用到了getClass方法,不过发现了一点以前没有发现过的问题,在这里记录一下。

问题描述

我写了两个类一个叫做Per另一个叫做Stu
在这里插入图片描述在这里插入图片描述
Stu类继承了Per类,然后我实例化了两个类的对象,接着我将子类的stu对象赋给父类的per对象
在这里插入图片描述
随后我使用hashCode()方法打印出了per对象刚刚生成的时候以及被赋值给stu对象之后的内存地址,发现两个内存地址是不相同的,这就说明per这个引用已经不再指向原来的那个对象的地址空间,而是指向了新的对象地址空间,其实指向的就是stu对象的地址空间。

不过这里有一个问题是:既然per指向了stu对象的地址空间那per应该是Stu类型的,并且可以调用Stu类中的方法。但是我做了一下测试发现不可以
在这里插入图片描述
可是这个时候发生一个很有意思的事情,当我用编译器查看per对象的类型时候,编译器给出的是

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值