作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我引用了一些java教程,发现java有两种多态。
- compile-time polymorphism(Static polymorphism)
- runtime polymorphism(Dynamic polymorphism)
一些学习引用中提到了“Java中如果重载一个静态方法,就是编译期多态的例子”。并且提到了一些“方法重载是编译时多态性的一个例子”。
我想知道的是只有静态方法重载还是每个方法重载都是java编译时多态?
因为看第一点的时候就觉得为什么要特别提到静态方法,为什么没有提到实例方法和构造函数。
谢谢
最佳答案
在 Java 中,调用哪个重载的选择总是在编译时做出。这适用于 static
方法、实例方法以及构造函数。
请注意,这两个陈述并不矛盾。第一个说,“如果你重载一个静态方法……”,它命名了一个正确的例子,但不排除其他例子。同样,另一个陈述“方法重载是编译时多态性的一个例子”更广泛,仍然正确,但没有提到构造函数。只要这些陈述没有声称已命名所有现有示例,它们就是正确的。
不过,在实例方法的情况下,除了编译时多态性之外,所选择的重载在被覆盖时也可能受到运行时多态性的影响。方法同时被重载和覆盖,很容易导致错误,因此应谨慎使用或避免使用。
关于java - 任何方法重载都是编译时多态性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079320/
当我使用 webpack4.2.0 时,播放“运行开始”,显示错误如下: 配置中的警告 'mode' 选项尚未设置。将“模式”选项设置为“开发”或“生产”以启用此环境的默认值。 多(webpack)-
我是一名优秀的程序员,十分优秀!