// 父类
class Sup {
int a = 8;
public void printA(){
System.out.println(a);
}
Sup(){
printA();
}
}
//子类
class Sub extends Sup{
int a = 9;
Sub(){
printA();
}
public static void main(String[] args) {
new Sub();
}
}
为什么两次输出的都是 8 ,按照多态的概念,在子类构造函数中调用者应该是子类对象,访问的也因该是是子类对象的属性9。
是不是我理解多态和继承有毛病。
子类中定义和父类重名的属性并不会覆盖父类的原有属性,两者是共存的,父类方法中使用的属性来自父类定义的,printA虽然在子类中调用,但使用的仍然是父类中的a,想使用子类中的a,可以在子类中重写这个printA方法