向上转型的一些问题
假设父类Animal,子类Cat,Animal one=new Animal(); Cat two=new Cat(); one=two; 是向上转型,那么如果在Animal类中有一个方法eat,Cat类重写了方法eat,那使用one.之后在提示菜单中显示的eat方法是哪个类的?我测试时后面写了个Animal,但实际上调用了Cat中的,这怎么回事啊?
正在回答
同学你好,父类引用指向子类实例,可以调用子类重写父类的方法以及父类派生的方法,无法调用子类独有方法。如下图所示:
如果同学在子类中没有重写eat()方法,则调用的就是父类中的方法。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,
1、假设父类Animal,子类Cat,Animal one=new Animal(); Cat two=new Cat(); one=two; 是向上转型。
同学理解错误,Animal one=new Cat();才是向上转型。按照课程课程也应该是如下这样:
按照同学的写法,只是实例化各自对象。
2、那么如果在Animal类中有一个方法eat,Cat类重写了方法eat,那使用one.之后在提示菜单中显示的eat方法是哪个类的?
显示的eat方法是Cat类的。因为向上转型的含义是父类的引用指向子类实例。
同学可以重新观看3-2小节向上转型,老师有讲解到。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星