这个重写的执行流程,我有错吗?

来源:4-4 编程练习

zhouKyou

2020-08-06 19:01:33

在进行4-4的编程时,我遇到了重写的传入参数问题

想要在Test类中使用重写后的方法equals

观察重载后的参数列表,需要传入Object类型的参数

于是将Car类型转化为Object类型

http://img.mukewang.com/climg/5f2be1ac09a3e4fc05000093.jpg

在实际的对比过程中,需要用到的又是Car实例下的属性

于是将Object类型转化为Car类型,再比较

http://img.mukewang.com/climg/5f2be1d609fa735f05840249.jpg

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

http://img.mukewang.com/climg/5f2be27708d1bd0c05810401.jpg

http://img.mukewang.com/climg/5f2be278092552b304480320.jpg

http://img.mukewang.com/climg/5f2be2780922ca8704540329.jpg

好想知道,老师看在我画了这么多图,思考了这么久的份上告诉我吧。。。

写回答

1回答

好帮手慕阿满

2020-08-07

同学你好,类型转换的过程同学理解的是正确的。但是 ,子类对象转换父类类型时,不需要强制转换,所以如下不需要强制转换:

Object obj  = car2;

这里也可以不显示的转换为Object。在调用equals()方法时,传入Car类型对象,将会自动转换为Object类型。

类型转换的过程中不会出现数据丢失的情况,具体是引用指向对象实例所在堆空间,不会出现数据丢失。

祝:学习愉快~

0

0 学习 · 16556 问题

查看课程