gpt4 book ai didi

java - 静态方法及其覆盖

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:27 25 4
gpt4 key购买 nike

Java 不允许覆盖静态方法但是,

class stat13
{
static void show()
{
System.out.println("Static in base");
}
public static void main(String[] ar)
{
new next().show();
}
}


class next extends stat13
{
static void show()
{
System.out.println("Static in derived");
}
}

这里没有覆盖吗?

最佳答案

不,您没有覆盖任何内容 - 您只是隐藏原始方法。

不幸的是,Java 允许您通过引用调用静态方法。你把它更简单地写成:

next.show();

重要的是,这段代码仍然会调用 stat13 中的原始版本:

public static void showStat(stat13 x)
{
x.show();
}
...
showStat(new next());

换句话说,绑定(bind)到正确的方法是在编译时完成的,与 x 的值无关——它通常会覆盖。

关于java - 静态方法及其覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521450/

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