我正在學習Java,我對此感到困惑:這段代碼究竟工作得如何?類延伸另一個問題?
class A
{
int n = 9;
void show()
{
System.out.println(n);
}
}
class B extends A
{
void show()
{
System.out.println(n+" "+super.n+" "+a.n);
}
int n = 4;
static A a = new A();
public static void main(String[] args)
{
B b = new B();
a.show();//9, expected
a = b;
/*Line A*/ a.show();//4 9 9
/*Line B*/ b.show();//4 9 9
}
}
在A行中,來自B的函數將被調用,這是預期的。但爲什麼要打印4 9 9?
請參閱[Java關於多態性的教程](https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html)。 – rgettman