从子类访问父级的私有实例变量是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (72)

假设我们有一个类foo,类中有私有实例变量bar。

现在创建另一个类baz,这样就扩展了 foo。如果没有在foo中定义访问方法,可不可以直接利用baz中的非静态方法访问foo中的变量bar?编程环境是Java。

提问于
用户回答回答于
用户回答回答于

根据java语言规范,第3版:

6.6.8示例:private字段,方法和构造函数 私有类成员或构造函数只能在包含成员或构造函数声明的顶级类(第7.6节)的主体中访问。它不被子类继承。

但是不管这种语言限制,你可以 通过映射访问私有空间

Field privateStringField = 
   MyClass.class.getDeclaredField("privateString");
privateStringField.setAccessible(true);

String fieldValue = (String) privateStringField.get(privateObject);
System.out.println("fieldValue = " + fieldValue);

扫码关注云+社区

领取腾讯云代金券