上代码
父类:
public class Father {
private String name="father";
public String getName(){
return this.name;
}
}
子类:
public class Son extends Father{
private String name="son";
/* public String getName(){
return name;
}*/
public static void main(String[] args) {
Son test=new Son();
System.out.println(test.getName());
}
}
我本以为结果输出是:
son
但实际结果是
father
打断点调试截图如下:
变得更加疑惑,这里显示的this明明是子类Son,但是调用getName方法时获取的却是父类的name属性呢?
在继承多态中:
1、对于方法的覆盖,new的谁就调谁,这就是多态。
2、对于成员变量的覆盖,this在哪个类就指向哪个类的成员变量,没有多态。
关于我的理解是否正确,如果正确,那么为什么Java要这样设计,而不是与方法一样有着相似的多态呢?
请教大家,谢谢!
私有字段并不会被覆盖。