解释变量隐藏在此 Java 代码中的工作原理
2022-09-02 04:16:38
考虑以下代码
class A
{
int x = 5;
void foo()
{
System.out.println(this.x);
}
}
class B extends A
{
int x = 6;
// some extra stuff
}
class C
{
public static void main(String args[])
{
B b = new B();
System.out.println(b.x);
System.out.println(((A)b).x);
b.foo();
}
}
程序的输出是
6
5
5
我理解前两个,但无法理解最后一个。b.foo() 如何打印 5.B 类将继承 foo 方法。但是它不应该打印b.x打印的东西吗?这里到底发生了什么?