我有三个类A、B和C:
package com.training.protectedclass.A;
public class A
{
protected int value;
}
package com.training.protectedclass.B;
import com.training.protectedclass.A.A;
public class B extends A
{
public void test()
{
this.value = 10;
A a = new A();
a.value = 12; //Error => The field A.value is not visible
}
}
package com.training.protectedclass.C;
import com.training.protectedclass.B.B;
import com.training.protectedclass.A.A;
public class C extends A
{
public void test()
{
B b = new B();
b.value = 45; //Error => The field A.value is not visible
}
}
当继承类存在于与基类不同的包中时,它无法访问基类的受保护成员。但是当所有三个类都存在于同一包中时,上述错误消失,代码将被编译而没有错误。
有人能解释一下我代码中发生的每个错误的原因吗?
谢谢 :)