加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 04:21:15 所属栏目:Java 来源:网络整理
导读:为什么 Java不支持静态方法的动态多态? 如果答案是“静态方法不应该在实例上调用,因此不需要在运行时解析方法调用”,那么进一步的问题是“为什么Java允许我在实例上调用静态方法?”.为什么不直接通过给出一些编译时错误来阻止用户直接调用实例上的方法. 反
为什么 Java不支持静态方法的动态多态?
如果答案是“静态方法不应该在实例上调用,因此不需要在运行时解析方法调用”,那么进一步的问题是“为什么Java允许我在实例上调用静态方法?”.为什么不直接通过给出一些编译时错误来阻止用户直接调用实例上的方法.

反过来说,如果Java支持静态方法的Runtime Polymorphism,会出现什么问题?

解决方法

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时出现了.因为静态方法属于类,所以没有覆盖静态方法的意义.因此,多态性总是适用于仅属于类实例的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读