方法是否重载了一种多态或其他形式?

时间:2012-06-16 16:54:17

标签: java oop overloading

我有一个长期的怀疑。有人可以告诉我方法重载是一种多态还是完全不同?

5 个答案:

答案 0 :(得分:7)

方法重载只是一种语法糖,允许您使用相同名称但不同参数的方法。它与多态性无关。方法重载通常用于定义接受不同参数的两个方法,例如:

public void println(boolean x) //...
public void println(char x) //...

或跳过某些参数并使用某些默认值:

public String substring(int beginIndex) //...
public String substring(int beginIndex, int endIndex) //...

方法覆盖,另一方面,是继承的基础,与多态性更密切相关。

答案 1 :(得分:3)

多态,字面意思是指具有多重行为的内容。

在java中,我们可以有一个静态和运行时多态。

重载是静态多态,因为它允许通过传递不同的参数来实现不同的行为。但这仅在complile时解决,因此是静态的。

覆盖是动态多态,因为对函数的实际调用取决于调用它的对象的类型,该对象仅在运行时可用,因此是动态的。

答案 2 :(得分:2)

不,不是。

使用重载,您只需提供具有不同签名的相同方法名称的不同实现。

由于多态(通过子类型)需要相同的签名(通过方法名称或参数),这两个东西永远不会相交。

答案 3 :(得分:1)

不,不是,这是方法重载。

java通过接口进行多态化。它没有多重继承。

但是,您可以使用多个界面和复合/委托模式来模拟多个插入。

答案 4 :(得分:1)

不,它与面向对象编程无关。重载只是意味着您可以为不同的方法签名使用相同的名称。