google了好久,终于进一步了解了protected的作用范围,先写例子:
package one;
public class A
{
protected int p;
}
package two;
import one.A;
class B extends A
{
void myMethod()
{
p = 1;
A a = new A();
a.p = 1;
}
}
=============================================================
package three;
public class C
{
/**
* constructor
* @param dd
*/
protected C( int v )
{
this.v = v;
}
private final int v;
}
package four;
import three.C;
class D extends C
{
/**
* constructor
*/
public D()
{
super(10);
}
void myMethod()
{
C c = new C(3);
D d = new D();
}
}
==============================================================
protected受访问保护规则是很微妙的。虽然protected域对所有子类都可见。但是有一点很重要,
子类只能在自己的作用范围内访问自己继承的那个父类protected域,而无法到访问别的子类(同父类的亲兄弟)
所继承的protected域。
(不可以通过别的类来访问别的类中继承的protected的值或方法)