[英]How can I gain access to a parent class's private variable?
我知道私有变量不会被继承,那么如何在子类中访问它呢?
即
class A{
private int i = 5;
// more code
}
class B extends A{
public int toInt(){
return super.i;
}
}
通常,您会将i
标记为protected
,这允许子类查看该字段。
另一种方法是编写一个get
样式的函数,该函数有时会更好,特别是如果您要禁止子类写入字段。 编写put
样式的函数确实会破坏封装。
反思还提供了另一种规避private
,但是不建议使用该方法。
通常,您不能也不应。 这就是该变量为private
的原因。
如果要实现基类以允许其子类访问私有成员,请实现protected
访问器方法(getter或setter)。 您也可以将字段标记为protected
但我什至不建议您从此开始。 您需要非常认真的理由来设置非私有字段。
Java中可能的“解决方法”是使用反射API:
Field f = A.class.getDeclaredField("i");
f.setAccessible(true);
f.get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.