方法重载和重写之间有什么区别?

2022-08-31 22:15:06

重载方法和重写方法之间有什么区别?任何人都可以用一个例子来解释它吗?


答案 1

方法重载处理在同一类中具有两个或多个名称但参数不同的方法的概念。

void foo(int a)
void foo(int a, float b)

方法重写意味着具有两个具有相同参数但实现不同的方法。其中一个将存在于父类中,而另一个将存在于派生类或子类中。注释虽然不是必需的,但有助于在编译时强制正确重写方法@Override

class Parent {
    void foo(double d) {
        // do something
    }
}

class Child extends Parent {

    @Override
    void foo(double d){
        // this method is overridden.  
    }
}

答案 2

方法重写是指子类使用相同的参数重新定义与父类相同的方法。例如,标准 Java 类扩展 。该方法在 中被覆盖。如果您有一个类型为 的变量,并且您调用其方法,它将根据它是 a 还是 a 来调用 的相应实现。这称为多态性。java.util.LinkedHashSetjava.util.HashSetadd()LinkedHashSetHashSetadd()add()HashSetLinkedHashSet

方法重载是在同一类中定义多个方法,这些方法接受不同数量和类型的参数。在这种情况下,调用的实际方法是在编译时根据参数的数量和类型确定的。例如,该方法是重载的,因此您可以传递int和Strings,并且它将调用该方法的不同版本。System.out.println()