小编典典

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

java

假设我们有一个foo包含私有实例变量的类bar

现在,让我们有另一个类baz,其中extends foo。如果在中没有定义baz访问器方法,可以在访问foo变量中使用非静态方法吗?bar``foo

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


阅读 222

收藏
2020-09-18

共1个答案

小编典典

不,不符合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);
2020-09-18