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

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 关注
  • 394 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信