package first;public class TestQ {
public int a ;
protected int b;
}
package second;
import first.TestQ;public class TestQ1 extends TestQ{
TestQ test = new TestQ();
int a1 = a;
int b1 = b;//int b1 = test.b;
}为什么注释中的代码(通过父类对象来访问父类的protected属性)不可以,而直接访问就可以?

解决方案 »

  1.   

    我只知道protected 是不同包的非子类不可见 其他不知
      

  2.   

    protected 不能通过类对象直接访问
      

  3.   

    楼上正解,就像是private一样,只能是方法互相访问,但是除了super.()除外哦
      

  4.   

    Java 是这样规定的,无条件接受
      

  5.   

    protected不能跨包访问,改为同一个包就对了。
      

  6.   

    public class Test
    {
    protected int i = 9;
    public static void main(String[] args)
    {


    Test1 t1 = new Test1();
    System.out.println(t1.j);


    }

    }
    class Test1
    {
    protected int j = 1;
    }
      

  7.   

    Protected关键字声明的变量,不同包的类是不能访问的.
      

  8.   

    zzwh_0() 举的那个例子,两个类在同一个包下(都是缺省包).
    所以还是满足:
    Protected声明的变量不同包的类对象不能访问的
                                 ~~~
      

  9.   

    弄明白了,其实所谓proceted权限说白了就是比friendly多了一个非同包子类的访问,而要是在子类中通过父类的对象调用的话,那就没有了继承的关系,就跟访问private 属性一样了。
      

  10.   

    同一包下,通过类名直接可以访问的成员变量和成员方法 要用 static 修饰.