gpt4 book ai didi

java - java中的继承并没有按照我预期的方式工作

转载 作者:行者123 更新时间:2023-12-02 04:14:33 25 4
gpt4 key购买 nike

我有以下类(class):

public class X {
public void A() {
B();
}

private static void B() {
System.out.println("111111111");
}
}

现在我有以下继承的类 Z:

public class Z extends X {

private static void B() {
System.out.println("22222222");
}
}

现在如果我这样做了

Z myClass = new Z();
Z.A();

结果我会得到:111111111。 (另外,Eclipse 告诉我继承类中的 B() 永远不会被调用)。

为什么?那么如何运行继承的B方法呢?

最佳答案

B 方法是静态的。当您调用方法 A 时,它使用类 B 的实现(因为这是定义方法 A 的地方)。类B不知道类Z的存在,并且无法调用类Z的方法。

由于该方法是静态的,因此从 B 继承时不会覆盖它。多态性仅适用于类的实例。静态方法不玩多态游戏,不能被重写。

关于java - java中的继承并没有按照我预期的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33462190/

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