Test.java
  package aa;
  class Test
  {
    protected void print()
     {System.out.println("ok");}
  }
Test2.java
  import aa.Test;
   class Test2  extends Test
  {
    public static void main(String[] args)
     {
           Test tt=new Test();
           tt.print()
     }
  }

解决方案 »

  1.   

    肯定可以了。本来protected方法就是为了只允许之类访问的。
      

  2.   

                同类     同包     子类      不同包
    public      yes     yes     yes      yes
    protected   yes     yes     yes
    缺省          yes     yes
    private     yes以上是访问权限控制!
      

  3.   

        public protected default private 
    同类 T T T T 
    同包 T T T   
    子类(不同包) T T     
    不同包中无继承关系的类 T       
      

  4.   

    同类 同包 子类 不同包
    Public √ √ √ √
    Protected √ √ √
    缺省 √ √
    Private √
      

  5.   

    protected应该是可以被同一个包内访问吧。
      

  6.   

    protected  可以被子类和同包中的类访问
      

  7.   

    protected的方法能被他的子类访问,只是你的代码本身就有错,因为你的class的访问区分符是default的,所以在不同的package中肯定是不可以访问的。
      

  8.   

    9楼正解,因为你的类是default的,所以决定了Test为包级访问,即只能在同一包中访问,类中的属性,方法皆只能为包级访问的了,不管属性,方法的访问级别是什么.