public class PolymorphismTest {
public void show() {
A a = new B();
B b = new B();
a.show();
b.show();
System.out.println("a.a: " + a.a);
System.out.println("b.a: " + b.a);
}
public class A {
public int a = 5;
public void show() {
System.out.println("A show");
}
}
public class B extends A {
public int a = 6;
public void show() {
System.out.println("B show");
}
}
}
为什么这里a.a的值是5而不是6呢?
Java中成员变量不具有多态性。一般情况下,方法可以在运行时绑定(动态绑定),但是变量只能在编译时绑定(静态绑定)。如果要得到B类中的a的值可以在B类中添加a的getter方法然后调用a.getA();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。