关于超载的澄清

时间:2011-08-18 09:23:23

标签: java overloading

当父类具有带有2个参数的add方法时,如果我们在子类中添加带有3个参数的新add方法,我们应该将其称为过载吗?

提前致谢。

6 个答案:

答案 0 :(得分:6)

是的,因为带有两个参数的方法是由子类继承的,所以带有三个参数的方法被称为重载方法。

class A
    add(param1, param2)

class B
    add(param1, param2)            <-- inherited
    add(param1, param2, param3)    <-- overloading the above method

Overriding and Hiding Methods上的官方记录引用:

  

注意:在子类中,可以重载从超类继承的方法。这种重载方法既不隐藏也不覆盖超类方法 - 它们是新方法,对于子类是唯一的。

(正如您可能已经想到的那样,具有三个类的方法不是最重要的方法。)

答案 1 :(得分:5)

是的,这是超载。即使方法与具有两个参数的方法属于同一类,它也会重载。

请注意,当存在不同数量的参数(并且没有varargs参数)时,重载相当简单。当你的方法具有相同数量的参数时,它会变得更加复杂 - 在这一点上,编译器必须从适用的候选方法中选择“最佳”方法。

另请注意,重载是在编译时确定的,而 override 的执行是在执行时根据调用该方法的对象的实际类型确定的。

答案 2 :(得分:3)

重载是指方法具有相同名称但具有不同签名的情况。 覆盖 - 当方法具有IDENTICAL NAMES和IDENTICAL SIGNATURE时。

答案 3 :(得分:2)

肯定是一个重载和一个很好的继承功能。

答案 4 :(得分:1)

如果方法名称已经存在但参数不同,则是,这是重载。

答案 5 :(得分:0)

是的...即使方法位于同一个类中,它也是重载方法。

ps:我假设具有三个参数的新方法具有相同的名称并且返回类型