接口中的常量问题

接口中的常量问题

1、接口里的常量:public static final TEMP=20;

老师,被final修饰的TEMP本身就是常量了,为什么还要加static呢?而加public是为了调用方便吗?

2、课程里,在接口INet里有public static final int TEMP=20;

在它的实现类里也有同名常量public static final int TEMP=30;

老师,为什么在测试类里:

INet net=new SmartWatch();

System.out.println(net.TEMP);

打印输出的结果是20,也就是说调的是接口的TEMP,而不是实现类的TEMP呢?


正在回答

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

2回答

很抱歉前句话说错了,确实是“接口引用指向实现类实例对象”。

调用接口中TEMP的原因是:向上转型发生后,只能调用父类或接口中属性,不能调用子类或实现类属性。

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

  • 鱼儿0001 提问者 #1
    好的,谢谢老师!
    2019-06-08 09:26:43
吃吃吃鱼的猫 2019-06-07 10:44:21

同学你好,

  1. 首先接口可以看成是一种高度抽象的"模版",而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,无法进行区分。

  2. 接口引用指向实现类的引用,调用的TEMP是接口中的static修饰的变量。同学记住这个规则即可哦~

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

  • 提问者 鱼儿0001 #1
    首先提出老师回复中的问题,你说:接口引用指向实现类的引用,调用的TEMP是接口中的static修饰的变量。前半句话应该是:接口引用指向实现类实例对象。再者,为什么调用的是接口的TEMP,老师并没有做出回答呦!
    2019-06-07 14:49:16
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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