在Java中,如何访问其他包中的受保护成员?
package p1
class base
protected int x
package p2
import p1.*
class derived extends base
int x
class subderived extends derived
int x
从subderived
主要我希望访问x
p1.base
作为受保护的规范我们只能使用继承,我们无法使用引用来访问base
{{1} }。要访问x
derived
,我们可以使用x
,但是super.x
,我们如何才能访问subderived
?
答案 0 :(得分:2)
受保护的成员可以从直接派生的类和子派生类访问,而不需要任何限定符:而不是编写
base.x = 123;
你可以写
x = 123;
并且它将编译正常,只要它在派生类的方法中。但是,为了使其工作,您需要从派生类本身中删除具有相同名称的成员:否则,基本成员隐藏,并且无法通过多个继承级别访问通过语言的正常语法进行层次结构,即不使用反射。