4

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

4

5 回答 5

7

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

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

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

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

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

于 2012-06-16T16:56:41.740 回答
3

多态性,字面意思是具有多种行为的事物。

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

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

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

于 2012-06-16T17:37:51.783 回答
2

不它不是。

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

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

于 2012-06-16T16:57:40.443 回答
1

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

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

但是,您可以通过使用多个接口和复合/委托模式来模拟多个继承。

于 2012-06-16T16:56:30.107 回答
1

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

于 2012-06-16T16:56:43.507 回答