当前位置: 首页 > 知识库问答 >
问题:

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

徐阳炎
2023-03-14
    null

因为在阅读第一点时,我感觉到为什么特别提到静态方法,而不提到实例方法和构造函数。

谢谢

共有1个答案

仲孙夕
2023-03-14

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

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

但是,对于实例方法,除了编译时多态性之外,所选重载在被重写时也可能受到运行时多态性的影响。既重载又重写的方法很容易导致错误,因此应该小心使用或避免使用。

 类似资料:
  • 问题内容: 我确实知道重载和重载之间的语法差异。而且我也知道,重载是运行时多态,重载是编译时多态。但是我的问题是:“重载真的是编译时的多态性吗?方法调用真的在编译时解决了吗?”。为了阐明我的观点,让我们考虑一个示例类。 由于所有方法都是公开的,因此可以全部重写(包括重载的方法),对吗?例如, 现在,考虑以下代码片段: 该方法返回一个随机对象。它可以返回的对象,或者它的任何子类,例如或或任何其他一个

  • 问题内容: 在我提出问题之前,让我解释一下我的理解和看法。 除非进行覆盖,否则仅通过Override才能实现多态。而且,它只能在运行时看到,人们可能将其命名为“运行时多态性”。( 我不反对将 多态 称为 运行时多态 ) 我反对 将 方法重载 称为 编译时多态 或多 态 。 我同意 方法重载 是静态绑定(编译时绑定),但是我看不到其中的多态性。 根据javadoc,只有多态性。没有编译时或运行时多态

  • 本文向大家介绍什么是运行时多态或动态方法重载?,包括了什么是运行时多态或动态方法重载?的使用技巧和注意事项,需要的朋友参考一下 多态是对象采取多种形式的能力。当使用父类引用来引用子类对象时,会在OOP中最常见地使用多态。被子类覆盖的方法称为运行时多态。JVM确定要在运行时而不是编译时执行的方法。  示例 输出结果

  • 下面的代码适用于Java1.7和Mockito版本1.10.19。 但是当我使用相同版本的Mockito迁移到Java1.8时,它开始显示下面的错误(粗体字母)。当我查看Mockito网站时,我发现Mockito3还不支持Java8。如果是,那么解决办法是什么?我应该等待他们的释放还是有什么方法可以解决这个问题。我尝试传递AnyString()来代替any(),但代码仍然中断。甚至anyObjec

  • 本文向大家介绍C#中的编译时多态是什么?,包括了C#中的编译时多态是什么?的使用技巧和注意事项,需要的朋友参考一下 多态可以是静态的也可以是动态的。在静态多态性中,对函数的响应是在编译时确定的。在动态多态中,它是在运行时决定的。 在编译期间将函数与对象的链接称为早期绑定。也称为静态绑定。C#提供了两种技术来实现静态多态性。它们是函数重载和运算符重载。 在函数重载中,可以在同一作用域中为相同的函数名