如题,证明Java中接口文件中定义的方法访问权限为public。
众所周知,接口中的方法默认是public abstract 类型的,它必须由子类实现之。那怎么证明呢,反射。
定义接口文件
package com.zhangqi.jvm; import java.util.Date; public interface ITest { double PI = 3.14; Date CREATE_TIME = new Date(); void play(); String getName(); }
接口文件中定义两个静态常量PI 和 CREATE_TIME ,两个方法 play 和 getName 。
接下来,测试方法来反射获取静态变量和方法。
package com.zhangqi.jvm; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflectTest { public static void main(String[] args) throws ClassNotFoundException { // 加载com.zhangqi.jvm.ITest类文件 Class<?> clazz = Class.forName("com.zhangqi.jvm.ITest"); // 获取类中所有方法 Method[] methods = clazz.getDeclaredMethods(); // 遍历每个方法,并输出该方法 for (Method method : methods) { System.out.println(method.toString()); } System.out.println("~~~~~~~~~~~~~~~~~~~~~"); // 获取类中所有静态变量 Field[] fields = clazz.getDeclaredFields(); // 遍历所有常量 for (Field field : fields) { System.out.println(field); } } }
执行之后,得到输出结果
public abstract java.lang.String com.zhangqi.jvm.ITest.getName() public abstract void com.zhangqi.jvm.ITest.play() ~~~~~~~~~~~~~~~~~~~~~ public static final double com.zhangqi.jvm.ITest.PI public static final java.util.Date com.zhangqi.jvm.ITest.CREATE_TIME
从而证明,静态变量的修饰词为
public static final
方法的修饰为
public abstract
时间: 2024-10-08 05:32:51