为了账号安全,请及时绑定邮箱和手机立即绑定

Java 多态

Java 多态

遇到一个java的多态问题想请教下大神们classAnimal{publicvoidsayHi(){System.out.println("hifromAnimal");}publicvoidlink(Animala){System.out.println("LinkinAnimal");a.sayHi();}}classCatextendsAnimal{publicvoidsayHi(){System.out.println("hifromCat");}publicvoidlink(Catc){System.out.println("LinkfromCat");c.sayHi();}}classMain{publicstaticvoidmain(String[]args){Animala=newCat();Catc=newCat();a.link(c);//LinkfromAnimal\nhifromcata.sayHi();//hifromCat}}
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

多态以后的上转型对象,即此处的a执行的方法只能是子类cat覆盖过的方法或者是父类animal自己的方法,你执行link(c)调用的是父类的link方法,因为子类没有覆盖这个方法,方法覆盖必须是参数类型也一致,进入animal的link方法之后,由于父类的sayHi方法被子类覆盖过,所以会调用子类的sayHi方法而不是父类的sayHi方法,具体你可以搜搜Java对象的上下转型
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 409 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号