关于视频中TEMP输出结果的疑惑

关于视频中TEMP输出结果的疑惑

INet net=new SmartWatch();
System.out.println(net.TEMP);
SmartWatch sw=new SmartWatch();
System.out.println(sw.TEMP);

这两个为什么会有区别呢?

正在回答

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

2回答

同学你好,

1、理解有误,当接口的引用指向具体实现类的时候,并不能调用static方法,如下所示:

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

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

2、当父类的引用指向子类的对象时,就使用父类中的静态方法和静态属性,是指如下这样吗?如果是,是可以的

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

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

3、子类在向上转型或者实现接口时,只有普通方法和普通变量可以改变?

这里同学未能理解同学的意思,建议同学重新描述或贴出代码

祝学习愉快~

  • mahsiaoko 提问者 #1
    第三点我想表达的是父类或者接口的引用指向子类之后,这个引用调用公有属性或者方法都是子类中重新实现的。不过我发现属性好像还是父类中的
    2020-05-26 18:49:54
  • 好帮手慕小脸 回复 提问者 mahsiaoko #2
    同学你好,理解是正确的 祝学习愉快~
    2020-05-26 19:21:52
好帮手慕小脸 2020-05-26 11:05:01

同学你好,第一种是接口的引用指向具体的实现类,这里TEMP是INet 接口里的常量

而第二种定义SmartWatch ,这里调用的TEMP是指该类自己定义的TEMP常量,同学不要搞混了哦~

同学可以尝试敲一遍代码试着去运行代码去理解两者的区别

祝学习愉快~

  • 提问者 mahsiaoko #1
    老师,可不可以这样理解,当接口的引用指向具体实现类的时候,static方法或者属性使用接口中的;在向上转型中,当父类的引用指向子类的对象时,就使用父类中的静态方法和静态属性;子类在向上转型或者实现接口时,只有普通方法和普通变量可以改变?
    2020-05-26 15:06:22
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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