前言
今天在复习Java的时候无意间用到了getClass方法,不过发现了一点以前没有发现过的问题,在这里记录一下。
问题描述
我写了两个类一个叫做Per另一个叫做Stu
Stu类继承了Per类,然后我实例化了两个类的对象,接着我将子类的stu对象赋给父类的per对象
随后我使用hashCode()方法打印出了per对象刚刚生成的时候以及被赋值给stu对象之后的内存地址,发现两个内存地址是不相同的,这就说明per这个引用已经不再指向原来的那个对象的地址空间,而是指向了新的对象地址空间,其实指向的就是stu对象的地址空间。
不过这里有一个问题是:既然per指向了stu对象的地址空间那per应该是Stu类型的,并且可以调用Stu类中的方法。但是我做了一下测试发现不可以
可是这个时候发生一个很有意思的事情,当我用编译器查看per对象的类型时候,编译器给出的是