我正在学习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