public class Test1 {
    protected int i = 0;
}public class Test {    public static void main(String[] args) {
        Test1 t1 = new Test1();
        t1.i = 5;
        System.out.println(t1.i);
    }
}
问什么可以这样?

解决方案 »

  1.   

    java的规则是这样的,在同一个包内:
                  继承       访问
    public        yes         yes
    protected     yes         yes
    private       no          no
    default       yes         yes
    在不同包则是
                  继承       访问
    public        yes         yes
    protected     yes         NO
    private       no          no
    default       NO          NO
      

  2.   

    如果在同一个包中protected是可见的。