gpt4 book ai didi

java - Java中静态方法不支持动态多态的原因

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:12 26 4
gpt4 key购买 nike

为什么Java不支持静态方法的动态多态?如果答案是“不应在实例上调用静态方法,因此不需要在运行时解析方法调用”,那么进一步的问题是“为什么 Java 允许我在实例上调用静态方法?”。为什么它不通过给出一些编译时错误来简单地阻止用户直接调用实例上的方法。

换句话说,如果 Java 支持静态方法的运行时多态性,会出现什么问题?

最佳答案

Why does Java allow me to call static methods on instances?

你的假设是错误的。它从不调用类的实例。它总是呼吁上课。

试试下面的示例代码,你将永远不会得到 NullPointerException

class ABC {
public static void hello() {
System.out.println("Hello");
}
}

ABC abc = null;
abc.hello();

What would have gone wrong if Java would have supported Runtime Polymorphism for static methods?

Polymorphism当你override子类中的方法。由于静态方法属于类,因此没有覆盖静态方法的意义。因此,多态性始终仅适用于属于类实例的实例方法。

关于java - Java中静态方法不支持动态多态的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855056/

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