首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重写和隐藏超类的静态方法有什么区别?

重写和隐藏超类的静态方法有什么区别?
EN

Stack Overflow用户
提问于 2015-04-16 07:20:22
回答 2查看 107关注 0票数 1

如果子类实现具有与其超类具有相同签名的实例方法,则称为覆盖。

相比之下,如果“覆盖”其超类的静态方法,则称为隐藏。

在函数调用期间,这两个概念在内存中有什么区别?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-16 22:16:49

静态方法的地址在编译时确定。因此,没有必要进一步搜索方法地址,这是决定的方式。

重写的方法地址在运行时确定。它取决于实例,并从基方法到重写方法搜索该方法的地址。

票数 1
EN

Stack Overflow用户

发布于 2015-04-16 22:24:33

重写是一种运行时现象,它依赖于对象,而对象是在运行时创建的,因此在运行时将根据对象来决定函数调用。

而静态方法调用是通过添加类名来完成的,如

代码语言:javascript
运行
AI代码解释
复制
           MyClass.abc();

这不依赖于对象,因为您在编译时清楚地提到了类名,这与对象无关,因为这个静态方法对所有对象都是全局的。因此,无论您将提到哪个类名,在静态方法的情况下,都将调用该方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29679162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档