因为Protected 的变量和方法,同样可被同一package中的类(不必是其子类)调用

解决方案 »

  1.   

    楼上说得很对,但是如果他们不在同一个包中的话,编译时就会报错!
    你看看下面的代码:
    /*** NewClass.java  ****/
    package fff;
    public class NewClass
    {
      public void f1(){
        System.out.println("f1()");
      }
      protected void f2(){
        System.out.println("f2()");
      }
    } /*****  TestClass.java *******/
    public class TestClass{
      public static void main(String[] args){
        NewClass refClass=new NewClass();
        refClass.f1();
        refClass.f2();//why can access the prortected method of NewClass
      }
    }这样两个程序在编译时就会报下面的错误:
    TestClass.java:8: f2()has protected access in xieli.NewClass
        a.f2();//why can access the prortected method of NewClass
         ^
    1 个错误
      

  2.   

    主要是几个访问指示符的区别:public,protected,private和缺省(friendly)
    friendly:只有同一包内能访问。
    protected:同一包内和所有子类都能访问
      

  3.   

    因为newclass没有访问指示符,于是缺省为friendly.
    而友元的私有成员和保护成员是可以被访问的。