从子类访问父级的私有实例变量?
2022-09-01 11:25:58
假设我们有一个类,它有一个 私有实例变量 。foo
bar
现在让我们有另一个类,它。如果 ? 中没有定义访问器方法,则 access 变量中的非静态方法可以吗?baz
extends foo
baz
foo
bar
foo
顺便说一句,我是用Java工作的。
假设我们有一个类,它有一个 私有实例变量 。foo
bar
现在让我们有另一个类,它。如果 ? 中没有定义访问器方法,则 access 变量中的非静态方法可以吗?baz
extends foo
baz
foo
bar
foo
顺便说一句,我是用Java工作的。
不,不是根据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);
不,为此,您应该使用protected.