为什么方法重载被称为静态或编译时多态性
Java 示例。
class StaticPolymorphismSample {
void polymorphicMethod(int a) {
}
void polymorphicMethod(int a, int b) {
}
void polymorphicMethod(String a) {
}
void nonPolymorphicMethod(int a) {
}
void nonPolymorphicMethod1(int a) {
}
}
所以我的问题是。
为什么我们说方法重载(在本例中是 polymorphicMethod
方法)是静态多态性,而其他方法( nonPolymorphicMethod(int a)
nonPolymorphicMethod1(int a)
)不是多态性 .
从技术上讲,我看不出具有相同名称和不同参数的方法与具有不同参数的方法之间的差异, 这里的所有答案和谷歌中的主题不适用于我的问题。
最佳答案
对于 nonPolymorphicMethod1(int a)
,它不会被视为多态的原因是因为它与其他非多态方法具有不同的名称。
对于 nonPolymorphicMethod( int a, int b )
和 nonPolymorphicMethod( int a )
,这些不被视为多态,因为它们不采用相同的参数。 编辑这是错误的,请参阅下一行
您展示的其他方法是多态的,因为它们共享名称,但参数类型或参数数量不同。
方法中多态性的一个更好的例子是:
public abstract class ClassA
{
public Object getObject()
{
return new Object();
}
}
public class ClassB extends ClassA
{
@Override
public ClassB getObject()
{
return new ClassB();
}
}
public class ClassC extends ClassA
{
@Override
public ClassC getObject()
{
ClassC example = new ClassC();
example.doStuff();
return example;
}
private void doStuff()
{
// Do Something To Change The Object
}
}
关于java - 静态/编译时多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273311/