如何获得父类的私有变量的访问权限?

时间:2016-08-25 10:41:40

标签: java

我理解私有变量不是继承的,所以如何才能在我的子类中获得对它的访问权?

 class A{
    private int i = 5;
    // more code
 }
 class B extends A{
    public int toInt(){
        return super.i;
    }
 }

2 个答案:

答案 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();
相关问题