关于选项A,求问,谁帮帮我?
想知道为什么A是错的?主方法里面Animal animal=new Dog(); 那么下面代码的animal指向的就是new Dog()啊,然后animal调用shout();
if(animal instanceof Dog)
(Dog) animal.shout();
else
((Roo)animal).leap();
下面这段斜体加粗是一个老师写的,看了她的我更加不懂了
“A选项中 在Manager的play方法中是一个Animal类型的参数,Animal类型可以传入子类型Roo类型也可以是Dog类型,当传入是Roo类型时,(Dog)animal.shout();这个语句是会报错的哦!”
正在回答
同学的说法是正确的哦! 非常抱歉,是老师没有注意到这个问题,A选项中(Dog)animal.shout();这个写法有错! 非常感谢同学提出的问题。继续加油~
祝: 学习愉快~
同学你好,关于A选项中,1、在Manager类中Animal是参数,这里需要调用Dog类中的shout方法,Animal是一个父类,是Dog类和Roo的父类,所以这个的Animal既可以强转为Dog又可以强转为Roo哦!
2、选项中是直接强转为Dog,然后调用Dog类中的shout方法,如(Dog)animal.shout();,但是当传入对象是Roo类时,Roo类中没有shout方法,这时这条语句会直接报错哦!所以在1处添加的语句需要加instances的判断哦!
3、以为最后需要调用Dog类中的shout方法来执行输出语句,所以这里需要new Dog();哦!
所以综上所述需要选择C选项哦!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
这个是补充的代码
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星