我理解私有变量不是继承的,所以如何才能在我的子类中获得对它的访问权?
即
class A{
private int i = 5;
// more code
}
class B extends A{
public int toInt(){
return super.i;
}
}
答案 0 :(得分:5)
通常,您将i
标记为protected
,这允许子类查看该字段。
另一种方法是编写一个get
- 样式的函数,有时可能更好,特别是如果你想禁止子类写入字段。编写put
式函数确实会破坏封装。
反思还提供了绕过private
的另一种方法,但不推荐使用这种方法。
答案 1 :(得分:3)
一般来说,你不能也不应该。这就是变量为private
的原因。
如果要实现基类以允许其子类访问私有成员,则实现protected
访问器方法(getter或setter)。您也可以将字段标记为protected
,但我不建议您开始使用它。你需要非常认真的理由来制作非私人领域。
java中可能的“解决方法”是使用反射API:
Field f = A.class.getDeclaredField("i");
f.setAccessible(true);
f.get();