如果不继承接口就报错

如果不继承接口就报错

如果这里写了 implements,答案正确

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

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




​如果没写implements Ball 就报错

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



不懂为什么

正在回答 回答被采纳积分+1

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

1回答
好帮手慕小尤 2020-12-13 11:17:31

同学你好,因public Ball getInner_m()方法的返回类型是Ball类型,所以当不实现Ball接口时会出现编译性异常,如下图所示:

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

注:当返回类型是接口时,是可以实现类的。

  • 提问者 一娆Hacker #1

    是每个成员内部类 都要写 get方法吗


    老师您的回答我还是没懂 这个getInner_m是在 class Inner_m外面的,它和Inner_m是否继承了Ball这个接口有什么关系吗? 


    我想问的是不继承接口在这个Inner_m类中写一个新的play方法,在调用这个play方法不可以吗?

    2020-12-13 11:21:10
  • 好帮手慕小尤 回复 提问者 一娆Hacker #2

    同学你好,1. 每个成员内部类不是都要写get方法的,同学可以在测试类中直接实例化成员内部类(如:new BallTest().new Inner_m().play();)。不过建议定义一个get方法,便于后期调用。

    2. getInner_m()方法的返回类型是Ball类型(可以返回Ball类型与Ball接口的实现类),则当成员内部类(Inner_m)不实现接口(Ball),则getInner_m()方法的返回类型与返回值(return new Inner_m())不符,从而导致出现编译性异常。所以成员内部类(Inner_m)需要实现接口(Ball)使其返回值与返回类型一致。

    3. 是可以的,当不实现Ball接口时,将getInner_m()方法的返回类型修改为成员内部类,就可以的直接调用play()方法的。如下图所示:

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

    祝学习愉快!

    2020-12-13 11:57:13
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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