本文共 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/