从子类访问父类的私有实例变量?

新手上路,请多包涵

假设我们有一个类 foo 它有一个私有实例变量 bar

现在让我们有另一个类, baz ,其中 extends foo 。 Can non-static methods in baz access foo ’s variable bar if there is no accessor method defined in foo ?

顺便说一下,我在 Java 工作。

原文由 lfaraone 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 576
2 个回答

不,不是根据 java 语言规范,第 3 版

6.6.8 示例:私有字段、方法和构造函数

私有类成员或构造函数只能在包含成员或构造函数声明的顶级类 (§7.6) 的主体内访问。它不被子类继承。

但是不管这种语言限制,你 都可以 通过反射访问私有字段

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

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

原文由 Wim Coenen 发布,翻译遵循 CC BY-SA 2.5 许可协议

不,为此你应该使用 protected.

原文由 RichieHindle 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐问题