gpt4 book ai didi

java - 类扩展另一个问题?

转载 作者:行者123 更新时间:2023-12-01 16:54:06 26 4
gpt4 key购买 nike

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

最佳答案

排队

a = b;

静态变量a被设置为类B实例。这是可能的,因为 B 继承自 A

因此,a 行调用 B 类的 show() 方法,而不是 A

有关更多信息,请搜索 material on Polymorphism .

关于java - 类扩展另一个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35208560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com