方案2的向上转型
public void feed(Animal obj) {
obj.eat();
if(obj instanceof Cat) {
Cat temp=(Cat)obj;
temp.playBall();
}else if(obj instanceof Dog) {
Dog temp=(Dog)obj;
temp.sleep();
}
老师,传入的子类的对象引用one和two,而feed方法的参数是父类的对象引用,在one和two时,是不是有默认的向上转型?
3
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕小班
2019-06-05 18:35:44
同学你好,1、这里非常抱歉给同学造成的误解,这里同学的说法是正确的哦,这里老师是没有注意到在测试方法中是 Cat cat=new Cat(); Dog dog=new Dog(); 这样的实例对象,接受类型是子类,然后将子类对象cat在方法的调用时直接转为Animal,这是向上转型哦!
2、但是如果在测试类中 Animal cat =new Cat();是这样的实例对象,那么这个public void feed(Animal obj) {} 方法中的Animal对象就不是向上转型哦!因为多态并不是向上转型哦!
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星