package one;
public class A {
protected int first;
protected static int second;
}
为什么受保护的实例成员在不同包中的子类内不可见,但受保护的类成员是?
package two;
import one.A;
public class B extends A {
public void someMethod() {
this.first = 5; //works as expected
B.second = 6; //works
A a = new A();
// a.first = 7; does not compile
//works just fine, but why?
a.second = 8;
A.second = 9;
}
}
为什么应用于静态字段不相同的限制,什么是它背后的想法?
嗨,我还没有得到答案,如何保护静态变量可以访问?在这种情况下,a.second = 8;是可访问的 – nagendra547
@ nagendra547限制只是实例成员的集合;班级成员不受这种限制。规范只需要这个例子成员。 –
好吧,你不能访问类成员,例如a.second,如果B没有扩展A. – nagendra547