gpt4 book ai didi

java - 任何方法重载都是编译时多态性吗?

转载 作者:行者123 更新时间:2023-12-01 09:12:40 25 4
gpt4 key购买 nike

我引用了一些java教程,发现java有两种多态。

  1. compile-time polymorphism(Static polymorphism)
  2. runtime polymorphism(Dynamic polymorphism)

一些学习引用中提到了“Java中如果重载一个静态方法,就是编译期多态的例子”。并且提到了一些“方法重载是编译时多态性的一个例子”

我想知道的是只有静态方法重载还是每个方法重载都是java编译时多态?

因为看第一点的时候就觉得为什么要特别提到静态方法,为什么没有提到实例方法和构造函数。

谢谢

最佳答案

在 Java 中,调用哪个重载的选择总是在编译时做出。这适用于 static 方法、实例方法以及构造函数。

请注意,这两个陈述并不矛盾。第一个说,“如果你重载一个静态方法……”,它命名了一个正确的例子,但不排除其他例子。同样,另一个陈述“方法重载是编译时多态性的一个例子”更广泛,仍然正确,但没有提到构造函数。只要这些陈述没有声称已命名所有现有示例,它们就是正确的。

不过,在实例方法的情况下,除了编译时多态性之外,所选择的重载在被覆盖时也可能受到运行时多态性的影响。方法同时被重载和覆盖,很容易导致错误,因此应谨慎使用或避免使用。

关于java - 任何方法重载都是编译时多态性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079320/

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