我有一个长期的怀疑。有人可以告诉我方法重载是一种多态还是完全不同?
答案 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)
不,它与面向对象编程无关。重载只是意味着您可以为不同的方法签名使用相同的名称。