我有一个长期的疑问。有人可以告诉我方法重载是多态的一种形式还是完全不同的东西?
问问题
1876 次
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 回答