假设我有一个带有包可访问成员的基类:
package testcase;
public class B
{
int b;
}
它有一个子类:
package testcase.sub;
import testcase.B;
public class C
extends B
{
int c;
}
现在我需要从定义字段的同一个包中访问成员字段:
package testcase;
import testcase.sub.C;
public class A
{
void testcase( C c )
{
c.c = 0; // HINT
( (B) c ).b = 1; // FIRST
c.b = 2; // SECOND
}
}
编辑:我完全理解A
无法访问c.c
以及标记为HINT的行无法编译的原因:C.c
仅对代码中的代码可见C.c
testcase.sub
包中A
包含testcase
时的同一个包。
但是A
和B.b
都在testcase
包中,那么为什么第一个分配编译,而第二个分配不呢?
答案 0 :(得分:2)
C
无法访问B.b
,B.b
是包级别权限,B
位于testcase
包中但{{1}在} C
包中。这些不是相同的包,因此testcase.sub
没有C
字段。