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");
}
}
}
show()函數執行實驗結果:
B show
B show
a.a: 5
b.a: 6
為什麼這裡a.a的值是5而不是6呢?
Java中成員變量不具有多態性。一般情況下,方法可以在運行時綁定(動態綁定),但是變量只能在編譯時綁定(靜態綁定)。如果要得到B類中的a的值可以在B類中添加a的getter方法然後調用a.getA();