一个包:
package com.wjf1;
public class T {
protected void f(){
System.out.println("ok");
}
}另一个包:
package com.wjf2;
import com.wjf1.T;
public class Test extends T{
public static void main(String[] args) {
Test test = new Test();
test.f();  //这个没有报错,下面的报错,为什么啊?
// T t = new T();
// t.f();  在不同包的子类中访问,为什么会报错?
}
}

解决方案 »

  1.   

    protected  只允许 同胞中和 他的子类访问
    其他的 包 或者 不是子类的话。。就是不能访问的。。 楼主在多看看。。tingking in javahttp://zhidao.baidu.com/question/200567393.html
      

  2.   

    protected方法只能被子类调用(好像同一个package也可以),main函数是Test类的成员方法,所以可以调用Test类的所有其他方法,包括继承来的protected方法,但是在main中 new T对象,T的f方法就是受保护的了。你可以在Test外写另外一个类放main函数,实现同样的逻辑,看看是不是都不能访问