例如,如果我们有:
package a;
public class A {
private int moo
protected int cow
int spot;
public A() {
}
}
和...
package p;
Import p.A;
public class C extends A {
int what;
public C (A a) {
what = cow;
what = spot;
}
}
那么为什么= spot有效且what = spot无效? (或者至少根据我的注释,什么=斑点无效。)
答案 0 :(得分:0)
您的代码中没有zoo
变量。反正..
由于类A
位于包a
中,C
包中的p
个类,C
无法访问包私有变量spot
。
如果您希望通过扩展类来访问spot
,请将其访问修饰符更改为protected
。
答案 1 :(得分:0)
spot
对于除其自己的包之外的任何类都不可见,即package a
。
在此处查看更多详情:Visibility Modifiers
答案 2 :(得分:0)
它是一个简单的访问修饰符问题,这是默认访问修饰符的用途,并将其与其他修饰符分开。 如果给定变量默认访问,则只能在同一个包中访问它。即使你在其他包中扩展了类。