[软构笔记]3.4节关于重载和重写的一点疑惑

[软构笔记]3.4节关于重载和重写的一点疑惑

关于重载:
在这里插入图片描述
可见
ua.doStuff(animalRefToHorse);输出的是“animal”,这里虽然参数animalRefToHorse被赋值了一个Horse(),但是在传参数的时候,他还是作为一个Animal变量被识别。

再看
在这里插入图片描述
但是这里gm.type();,gm是一个Game对象,但是被赋值了一个game的子类型Cricket对象,gm.type()用的却是子类型的方法,与上一个图的情况截然相反。

仔细查看可见才发现原来这个解释在之前重载的部分有描述了:
在这里插入图片描述
于是我们的疑惑就得到了解答,第一个图是重载方法,是根据编译阶段传入的引用数据类型来决定调用的:如下
在这里插入图片描述
但是第二个图是重写方法:是在运行时基于对象类型动态分配的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章