博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[java]接口中的成员属性最终都是公共静态常量
阅读量:2215 次
发布时间:2019-05-07

本文共 854 字,大约阅读时间需要 2 分钟。

接口的成员特点:

1:成员变量 只能是常量。默认修饰符 public static final
2:成员方法 只能是抽象方法。默认修饰符 public abstract

我们知道没有被任何修饰符修饰发成员属性当然会在编译完成后成为公共静态常量.

但是就像创建了有参构造器后默认的无参构造器失效一样,添加了部分修饰符的成员属性默认修饰是否会发生改变呢?

答案是并不会.

在使用接口类当常量存储媒介使用时我发现接口中的成员属性只要不编译报错,无论用什么修饰符最终都是公共静态常量.

接下来开始证明,先给出包的结构

在这里插入图片描述
package1存放存有成员属性的接口Test2
package2中存放测试类Test

再给出Test2的成员属性具体状况:

public interface Test2 {//    private String arg1 = "arg1"; 使用private修饰会编译报错,因此注释掉了//    protected String arg2 = "arg2";    String arg3 = "arg3";    public String arg4 = "arg4";//    static private String arg5 = "arg5";//    static protected String arg6 = "arg6";    static String arg7 = "arg7";    static public String arg8 = "arg8";}

第一步

证明接口的成员属性只要编译通过都是公共静态的

在这里插入图片描述
Test和Test2位于不同的包中,这里能直接调用arg3/4/7/8显然这四个成员属性都是静态公共的.

第二步

证明接口的成员属性只要编译通过都是常量的

arg4已经被public修饰了,没有被final显式修饰,那么是否是常量呢?

在这里插入图片描述
答案是常量,依次对其他三个成员属性赋值,结果显示全部为常量.

最终结论

接口中的成员属性最终都是公共静态常量.

转载地址:http://unzfb.baihongyu.com/

你可能感兴趣的文章
AI 在 marketing 上的应用
查看>>
Logistic regression 为什么用 sigmoid ?
查看>>
Logistic Regression 为什么用极大似然函数
查看>>
SVM 的核函数选择和调参
查看>>
LightGBM 如何调参
查看>>
用 TensorFlow.js 在浏览器中训练神经网络
查看>>
cs230 深度学习 Lecture 2 编程作业: Logistic Regression with a Neural Network mindset
查看>>
梯度消失问题与如何选择激活函数
查看>>
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
什么是 Q-learning
查看>>
用一个小游戏入门深度强化学习
查看>>
5 分钟入门 Google 最强NLP模型:BERT
查看>>
初探Java设计模式4:一文带你掌握JDK中的设计模式
查看>>
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>