这个重写的执行流程,我有错吗?
来源:4-4 编程练习
zhouKyou
2020-08-06 19:01:33
在进行4-4的编程时,我遇到了重写的传入参数问题
想要在Test类中使用重写后的方法equals
观察重载后的参数列表,需要传入Object类型的参数
于是将Car类型转化为Object类型

在实际的对比过程中,需要用到的又是Car实例下的属性
于是将Object类型转化为Car类型,再比较

问题是:这个过程是这样吗?会不会存在什么数据丢失的问题?因为父类的内存空间肯定比子类要小啊,还是说,其实加载的时候,父类有堆单独的一片空间,子类也有不一样的堆的一片空间,通过子类在堆中某个指向父类的引用来达到数据的连接???



好想知道,老师看在我画了这么多图,思考了这么久的份上告诉我吧。。。
1回答
同学你好,类型转换的过程同学理解的是正确的。但是 ,子类对象转换父类类型时,不需要强制转换,所以如下不需要强制转换:
Object obj = car2;
这里也可以不显示的转换为Object。在调用equals()方法时,传入Car类型对象,将会自动转换为Object类型。
类型转换的过程中不会出现数据丢失的情况,具体是引用指向对象实例所在堆空间,不会出现数据丢失。
祝:学习愉快~
相似问题