面向对象基础知识,请指点
编写如下代码
public class A {
public String getValue() {
return getRealValue();
}
private String getRealValue() {
return "a";
}
}
public class AA extends A {
protected String getRealValue() {
return "aa";
}
}
使用代码测试:
A a = new AA();
System.out.println(a.getValue());
得到输出 “a”
如果把A类中的private方法getRealValue修改为protected,那就得到“aa”。为什么呀?
-----------------
在core java中看到说类似于A a = new AA(); 这样的语句,虽然a为A类型,但a指向的存储空间所保存的数据仍然是AA类型的。那这样来说应该不管是private的getRealValue还是protected,都应该得到aa呀!