gpt4 book ai didi

java - 重写静态方法和多态性

转载 作者:行者123 更新时间:2023-12-01 19:52:25 24 4
gpt4 key购买 nike

我在某处读到覆盖 static方法不能被视为多态性。只是隐藏方法。 “隐藏”是什么意思?

<小时/>
public class TesterClass {
public static void main(String[] args) {
ClassLetters.staticM();
ClassA.staticM();

ClassLetters Lettersobj = new ClassA();
ClassA Aobj = new ClassA();


Lettersobj.staticM();
Aobj.staticM();
ClassA aa = (ClassA) Lettersobj;
aa.staticM();
}
}

输出:

Static Method Called in CLassLetters
Static Method Called in ClassA
Static Method Called in CLassLetters
Static Method Called in ClassA
Static Method Called in ClassA
<小时/>

classA继承ClassLetters与相同static void classM 。为什么不是多态?

最佳答案

您无法覆盖静态成员,因为它们不是继承的。他们属于类(class)本身,就这样。

如果您创建一个子类,并创建一个具有相同名称/参数/...的(新)静态方法,您不会覆盖原始方法,而是重新定义一个新方法。

因此,原始类中的静态方法没有被覆盖,而是隐藏了。

关于java - 重写静态方法和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50906637/

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