new一个SmartWatch却赋值到INet这个接口对象上。这实际上有什么意义呢。作用在哪

new一个SmartWatch却赋值到INet这个接口对象上。这实际上有什么意义呢。作用在哪

INet net = new SmartWatch();这样子有什么实际意义。为什么要这样赋值。就为了向上转型么

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

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

3回答
好帮手慕阿满 2020-06-28 10:50:49

同学你好,下边“明明是只幼刀”同学解释的不错。这里只是接口的简单实现,告诉同学怎样使用。

如果INet 接口有多个实现类,INet net= new SmartWatch(); net对象调用接口中的方法,这次是指向了SmartWatch()实现类,如果想换个实现类,只需要将net对象指向不同的实现类对象即可,后边调用的方法以及对象等都不需要改变。

通过接口的引用,指向不同的实现类,调用同样的方法,得到不同的结果,这是多态的一种体现。

祝:学习愉快~

明明是只幼刀 2020-06-27 22:22:04

http://img1.sycdn.imooc.com//climg/5ef754b209f55ac702760090.jpghttp://img1.sycdn.imooc.com//climg/5ef754ba096a916902810103.jpg

定义加血,加蓝两个接口

http://img1.sycdn.imooc.com//climg/5ef754d509630b5104930284.jpghttp://img1.sycdn.imooc.com//climg/5ef754dc09259a7005130262.jpg

两个类,英雄类,人类,都去实现加血加蓝接口

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

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

分别让两个实现类调用加血加蓝方法

通过接口引用指向对象,因为接口代表着方法,所以更清晰要调用的是什么方法

如果新增一个别的类去实现接口,则不需要修改前部分的语句

  • 提问者 qq_熊掌柜__0 #1
    饿。。跟我问题有关么?
    2020-06-27 22:26:38
  • 明明是只幼刀 回复 提问者 qq_熊掌柜__0 #2
    INet net = new SmartWatch();这样子有什么实际意义,不是你问的么? 视频后边也有直接类定义的,没什么意义,就是视频里想这么定义而已,为了测试常量TEMP而已.
    2020-06-27 22:34:50
  • 提问者 qq_熊掌柜__0 回复 明明是只幼刀 #3
    你回答的只是多态的应用而已。那么长跟我问题没关系。我只想知道这个有没有实际意义。还是只是为了教学。这样定义而已。
    2020-06-27 22:36:05
明明是只幼刀 2020-06-27 21:15:47

使用接口引用指向类的对象,而不是类指向类的对象,我的理解是这样:

1:简明

当一个类实现了多个接口,那么意味着这个类拥有了诸多不同的方法,使用接口引用可以清晰的明白这里的类是要使用哪个方法.

2:灵活

因为多态,接口可以有多个实现类,当需要改变实现类的时候,只需要改变后半段的语句即可,而不需要全部重写,程序更加灵活.

  • 提问者 qq_熊掌柜__0 #1
    我这样只能调用接口的方法。并没有调用SmartWatch的方法。简明在哪?你向上转型了。怎么清晰明白知道类使用哪个方法?灵活在哪?你向上转型的话。只能使用转型后接口的方法。你重写一万个也是只能调用你转型的接口方法啊。不明白跟我问题有什么关联。
    2020-06-27 21:23:24
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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