【发布时间】:2020-08-12 02:44:21
【问题描述】:
public class A {
public int a = 10;
public void show() {
}
}
public class B extends A{
public int a = 20;
public int b = 10;
@Override
public void show() {
System.out.println(this.a);
}
public static void main(String[] args) {
A a = new B();
a.show();
System.out.println(a.a);
}
}
看上面的代码,我使用父class A引用指向子class B object (A a = new B()),但是当我在main方法中打印a.a(System.out.println(a.a))时,它打印10,因为成员变量a被赋值了10 在父 class A 中。但是当我在show 方法中打印this.a(System.out.println(this.a))(在子类中重写)时,show 方法打印this.a (System.out.println(this.a)),它打印20,我很困惑。我认为结果应该是一样的。
可以看到输出如下图:
20
10
提前致谢!
【问题讨论】:
-
class A() ,class 周围没有
() -
是的,我已经修改过了。
标签: java polymorphism