说的好,不过即使我们没有这个钥匙,还可以看到父亲的情书的,个人补充一些
java提供的反射技术可以达到,修改了一些代码
如下:
import java.lang.reflect.Field;
class Fu
{
private String name="zhangsan";// 父类私有变量
public void show()
{
System.out.println("show run");
}
public String getName()//对外提供私有变量的访问方法
{
return this.name;
}
}
class Zi extends Fu
{
public void showName()
{
//System.out.println(this.name);//编译报错,不能访问父类私有变量
//System.out.println(super.name);//编译报错,不能访问父类私有变量
//System.out.println(super.getName());//正确执行
System.out.println(this.getName());//正确执行
//增加的代码
try {
Field fieldName = Fu.class.getDeclaredField("name");
fieldName.setAccessible(true);
String value = (String)fieldName.get(this);
System.out.println(value); //输出父类私有成员变量的值
} catch (Exception e) {
System.out.println("父类中确实不存在 name 属性");
}
}
}
class Test
{
public static void main(String args [])
{
Zi z = new Zi();
z.showName();
}
}
技术交流 |