java中的方法重载与重写[duplicate]

wko9yo5t  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(139)
    • 此问题在此处已有答案**:

(13个答案)
19小时前关门了。
下面的代码是方法重载或重写的示例吗?
我从超类继承了一个方法到子类,子类有main方法,但是很少有网站显示重载方法应该只在父类中重新定义,但是我没有这样做。

class overload
{
    public static void sum(int a, int b, int c)
    {
        System.out.println("sum="+(a + b + c));
    }
}

class Main extends overload
{
    static void sum(int a, int b)
    {
       System.out.println("sum="+(a+b));
    }
    
    public static void main (String s [])
    {
       sum(1,2);
       sum(1,2,3);
    }
}
olhwl3o2

olhwl3o21#

是的,这是超载:它提供了两个同名但签名不同的方法。

  • 重载 * 只发生在相同的签名下,子类提供不同的 * 实现 * 而不改变公开的API。在类层次结构中重载,而不是在同一个类中声明所有的方法,这增加了额外的复杂性,但它并没有改变这样一个事实,即从根本上说,这是重载。

(Note这里main方法的存在是无关紧要的,如果没有它,您的代码仍然是重载的一个例子。)
为了增加一点复杂性,覆盖 * 不能 * 发生在静态方法上。子类可以声明一个静态方法,它与超类中的一个方法具有相同的签名,而不覆盖任何东西--因为当调用静态方法时,没有对象可以用来选择要调用的实现。这不是覆盖 * 或 * 重载的情况。

相关问题