我有一个长期存在的疑问。 可能有人请告诉我方法重载是多态性的一种形式或者是完全不同的东西?
Answer 1:
方法重载只是一个语法糖让你有同名但不同参数的方法。 它无关多态性。 方法重载通常用于限定两个方法接受不同的参数,例如:
public void println(boolean x) //...
public void println(char x) //...
或跳过某些参数,并使用一些默认值:
public String substring(int beginIndex) //...
public String substring(int beginIndex, int endIndex) //...
方法覆盖 ,另一方面,是继承的基础,更是密切相关的多态性。
Answer 2:
多态性 ,字面上是指一些东西,有多个行为。
在Java中,我们可以有一个静态和运行时多态性。
重载是静态的多态性,因为它允许通过传递不同参数的方式不同的行为。 但是,这是在请编译时间而已,因此静态的解决。
重写 ,是动态的,因为多态性的函数的实际调用取决于对象调用它的类型,其仅适用于运行时,因此动态。
Answer 3:
不它不是。
超载您只需要提供不同的签名相同的方法名称的不同实现。
由于多态性 (由子类型)需要相同的签名,则两件事情可以永不相交(即或者通过方法的名称或者通过参数制造)。
Answer 4:
不,它不是,它是方法重载。
java的通过接口确实多态性。 它没有多重继承。
你可以,但是,通过使用多个接口和复合/委托模式模拟多个inhertance。
Answer 5:
不,这不是关系到面向对象编程。 超载只是意味着你可以针对不同的方法签名使用相同的名称。
文章来源: Is method overloading a form of polymorphism or something else?