【发布时间】:2020-04-17 11:17:36
【问题描述】:
public SuperClass{
protected int a1;
}
// Consider that two classes are in different package.
public SubClass extends SuperClass{
void m1(){
SuperClass sp = new SuperClass();
sp.a1 = 1; // Error: Subclass.a1 is not visible
}
}
我认为受保护的成员 a1 对子类是可见的。此外,字段 a1 属于 SuperClass。那么为什么它不可见呢?
【问题讨论】:
-
只有通过子类类型的实例在子类中可见。你不能
superClassObject.protectedMember,它必须是子类中的subclassObject.superclassProtectedmember。 -
但是 a1 属于超类。那么为什么 a1 对 sp 对象不可见呢?
-
这个问题的答案解释得最好:stackoverflow.com/questions/18573016/…
标签: java