关于超载的澄清

Vaa*_*ndu 5 java overloading

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

提前致谢.

aio*_*obe 6

是的,由于具有两个参数的方法由子类继承,因此具有三个参数的方法被称为重载方法.

class A
    add(param1, param2)

class B
    add(param1, param2)            <-- inherited
    add(param1, param2, param3)    <-- overloading the above method
Run Code Online (Sandbox Code Playgroud)

关于覆盖和隐藏方法的官方记录引用:

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

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


Jon*_*eet 5

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

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

还要注意,在编译时确定重载,而在执行时根据调用该方法的对象的实际类型确定执行哪个覆盖.