不懂,感觉Base baseObj=(Base) anObj这样没意义,anObj没有base特性吧

不懂,感觉Base baseObj=(Base) anObj这样没意义,anObj没有base特性吧

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

主方法中,第一行生成子类对象,第二行通过父类型进行了强转,但是对象本质还是子类,所以调用的是子类的重写方法。此处的用法等同于 Base baseObj=anObj; 即向上转型

  • 摄影祖师爷 提问者 #1
    我试了下System.out.println(anObj instanceof Base)=true,是不是子类可以无条件转型父类,但是父类并不能转型为所有的子类,比如,Animal animal=new Dog(),这个animal可以向下转型为Dog,但是不能转型为其他子类。
    2018-06-19 15:54:59
  • 喜欢做梦的鱼 回复 提问者 摄影祖师爷 #2
    anObj instanceof Base 不是转型,只是判断前面的对象是否匹配后面的类型。向下转型时,对象必须先经过向上转型,才能进行向下转型,否则无法转换
    2018-06-19 16:16:59
  • 摄影祖师爷 提问者 #3
    非常感谢!
    2018-06-19 16:58:03
提问者 摄影祖师爷 2018-06-19 11:40:16

一般都是父类引用指向子类对象,然后将子类对象转换为父类对象,这道题,anObj是子类引用,子类对象,但是却将子类对象转换成父类引用,然后调用test方法...然后懵逼了。

  • 这个作业考察的知识点是当子类中重写了父类的方法的时候,子类对象向上转型成父类实例后调用的是子类的方法,不是父类的方法。
    2018-06-19 14:58:10
  • 提问者 摄影祖师爷 回复 慕慕6012600 #2
    向上转型不是应该这样写吗:Base baseObj=new Child();s
    2018-06-19 15:10:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师