【发布时间】:2014-03-07 23:41:53
【问题描述】:
我有 3 个 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
}
}
当被继承的类存在于与基类不同的包中时,它不能访问基类的受保护成员。但是当这三个类都存在于同一个包中时,上述错误消失,代码编译没有错误。
谁能解释我上面代码中每个错误的原因?
谢谢:)
【问题讨论】:
-
这是因为 C 没有扩展 B。可见性不具有传递性。
标签: java