重名方法ing

重名方法ing

老师,1、多接口会造成重名问题,使得实现类不得不去重写方法,那么,这个重写的方法到底是哪个接口的呢?

2、感觉接口有点像抽象父类,抽象父类的方法必须要在子类被重写,相应的,接口定义的方法也必须在实现类里去重写。接口定义的default方法,实现类不是必须要重写,在接口引用.方法名调用时,调的是接口的default方法。我就觉得这一切和父类子类那种继承关系有点像。

3、老师,如果多接口的方法不是重名的默认方法,而是重名的抽象方法,那么实现类是不是也得重写?

4、父类与多接口方法重名,子类没有重写方法,老师,利用接口引用.方法名调用的方法是子类隐藏继承的方法吗?

正在回答

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

3回答

1、是的,实现类需要重写接口的抽象方法,这个与是否避免重名无关,无论有没有重名,都需要重写这个接口中的抽象方法哦。其实,我们实现接口的时候,就尽量不要让有重名方法的接口同时实现。假如两个接口是同名的但返回值不同,那实现类中写谁都是错的了。

http://img1.sycdn.imooc.com//climg/5ce91a9d0001c3a703700178.jpg


http://img1.sycdn.imooc.com//climg/5ce91ad700012a9507260541.jpg

http://img1.sycdn.imooc.com//climg/5ce91af00001419504190119.jpg

除非两个接口中重名的那个方法返回值一样就不会报错了

http://img1.sycdn.imooc.com//climg/5ce91b3d000135d003120146.jpg

http://img1.sycdn.imooc.com//climg/5ce91b4a0001e17404540134.jpg

所以,同学说的对,是要重写,但要尽量避免这种情况。

第二个问题:父类里的方法与多接口的抽象方法或者默认方法是重名,子类没有去重写这个重名的方法,利用接口引用.方法名调用的方法是子类隐藏继承自父类的方法吗?

是的,同学理解的没错。它调用的就是子类隐藏继承自父类的方法。

祝学习愉快。


  • 鱼儿0001 提问者 #1
    好的,谢谢老师!
    2019-05-25 19:19:15
好帮手慕小班 2019-05-24 19:41:21

同学你好,1、继承和实现接口的方法同名!如果子类中不存在父类的方法的实现[或者覆盖],在使用该类对象调用该方法的时候,就会使用从父类继承的方法。同时将这个从父类继承来的方法当作接口方法的实现,也就可以不再实现接口的方法体!

2、多接口的方法同名:只要编译没有错误,那就是即是第一个接口的实现方法,有事第二个接口的实现方法,两个都可以调用!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 鱼儿0001 #1
    老师你回答的是啥呀,我看都看不懂。我的第一个问题是:有很多接口,这些接口里写有重名的抽象方法(注意不是默认方法),比如都有void say();,它们的实现类是不是需要去重写,避免重名问题?我的第二个问题是:父类里的方法与多接口的抽象方法或者默认方法是重名,子类没有去重写这个重名的方法,利用接口引用.方法名调用的方法是子类隐藏继承自父类的方法吗?
    2019-05-25 14:21:18
吃吃吃鱼的猫 2019-05-23 18:38:44

同学你好,

1、根据方法参数顺序,类型,个数去确定重写的是哪个接口中的方法。其次,接口人为定义,定义时,会尽量避免这种情况的发生。

2、同学可以这样理解。

3、需要同学详细描述下什么叫多接口的抽象方法。

4、子类实现了接口,就一定会重写接口中的方法,利用接口引用.方法名调用的是重写的方法。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 鱼儿0001 #1
    老师,1、我的意思是:多接口的抽象方法,指的是有很多接口,这些接口里写有重名的抽象方法,比如都有void say();,它们的实现类是不是需要去重写,避免重名问题。2、我的最后一个问题,老师回答的驴唇不对马嘴,我没问接口的抽象方法要在实现类里必须去重写,我问的是:父类里的方法与多接口的默认方法重名,子类没有重写方法,利用接口引用.方法名调用的方法是子类隐藏继承自父类的方法吗?
    2019-05-24 14:33:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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