class test21 {
int a=1;
public void aaa(){
System.out.println("父类的 "+this.a);
}
public static void main(String[] args) {
test21 tt = new A();
tt.aaa();
System.out.println(tt.a);
}
}
class A extends test21 { // 子类继承父类
int a=2;
public void aaa(){
System.out.println("子类的 "+this.a);
}
}
我的疑问是:我在父类中和子类中各写了一个属性a ,在主方法中创建子类对象,然后使用父类引用指向子类对象,子类再重写父类方法,然后我用父类引用 tt 调用 这个方法,(我记得哪个对象调用 this 就是指的那个对象)我知道输出的是子类中方法但是子类中的这个this.a 相当于 tt.a对吗?可是tt 的编译类型是父类呀,为什么输出的值不是父类中的 1 呀