日期:2014-05-20  浏览次数:20695 次

有关protected访问权限的问题
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属性)不可以,而直接访问就可以?

------解决方案--------------------
我只知道protected 是不同包的非子类不可见 其他不知
------解决方案--------------------
protected 不能通过类对象直接访问
------解决方案--------------------
楼上正解,就像是private一样,只能是方法互相访问,但是除了super.()除外哦
------解决方案--------------------
Java 是这样规定的,无条件接受
------解决方案--------------------
protected不能跨包访问,改为同一个包就对了。
------解决方案--------------------
数据field private
------解决方案--------------------
Protected关键字声明的变量,不同包的类是不能访问的.
------解决方案--------------------
zzwh_0() 举的那个例子,两个类在同一个包下(都是缺省包).
所以还是满足:
Protected声明的变量不同包的类对象不能访问的
~~~

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