class Test { public static final int PUBLIC_STATIC_NUMBER = 100; static int DEFAULT_STATIC_NUMBER=200; public int PUBLIC_NUMBER=300; protected int PROTECTED_NUMBER=400; private int PRIVATE_NUMBER=500; } //////////////////////////////////////////////////////////////// Main.java package javaforum;
import java.lang.reflect.Field;
public class Main { public static void main(String[] args) throws Exception { Class clazz = Class.forName("javaforum.inner.Test"); Field field1 = clazz.getField("PUBLIC_STATIC_NUMBER"); //被注释掉的语句根本就不能通过编译 //Field field2 = clazz.getField("DEFAULT_STATIC_NUMBER"); Field field3 = clazz.getField("PUBLIC_NUMBER"); //Field field4 = clazz.getField("PROTECTED_NUMBER"); //Field field5 = clazz.getField("PRIVATE_NUMBER");
"3、具有包访问权限的类,其成员声明为public和protected是没有意义的,因为在包外不能访问也不能继承的。"
我也在困惑这个问题, 但这个在包访问权限的类里定义public方法还是有意义的。
其意义在于继承类对方法的调用上。
如果类A 定义成了 包访问权限:
里面两个方法f1(){} 和 public f2(){}
类 B 为public 并继承自A.(在同一包里)。
public class B extends A
在A里调用 超类的f1()和f2()都可以。
类C 继承自类B,(在不同包里)在C里可以调用f2(),但不能调用f1()l了。