繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM