lfa*_*one 25 java oop polymorphism inheritance class
假设我们有一个foo
具有私有实例变量的类bar
.
现在让我们有另一个班级baz
,哪个extends foo
.如果没有定义baz
访问器方法,访问foo
变量中的非静态方法可以吗?bar
foo
顺便说一下,我在Java工作.
Wim*_*nen 29
不,不是根据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);
Run Code Online (Sandbox Code Playgroud)
对于这样的问题,网站上的表格位于何处:http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
基本上,您希望在foo中声明公共变量或受保护变量,因为这些变量是子类继承自其父变量并因此在baz中看到的变量.
归档时间: |
|
查看次数: |
63546 次 |
最近记录: |