假设我们有一个foo包含私有实例变量的类bar。
foo
bar
现在,让我们有另一个类baz,其中extends foo。如果在中没有定义baz访问器方法,可以在访问foo变量中使用非静态方法吗?bar``foo
baz
extends foo
bar``foo
顺便说一下,我在用Java工作。
不,不符合Java语言规范,第3版:
6.6.8示例:私有字段,方法和构造函数 私有类成员或构造函数只能在包含该成员或构造函数声明的顶级类(第7.6节)的主体内访问。它不是子类继承的。
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);