如题,证明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