在 Java 中,重写(Override)和重载(Overload)是两个不同的概念,它们都与方法有关,但它们的含义和用途是不同的。

1. 重写(Override):

重写是指在子类中定义一个与父类中已有的方法具有相同签名(方法名、参数列表和返回类型)的方法。子类中的这个方法会覆盖(替代)父类中的方法,以提供特定于子类的实现。
class Animal {
    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Dog barks");
    }
}

在上面的例子中,Dog 类重写了 Animal 类中的 makeSound 方法。当通过 Dog 类的对象调用 makeSound 方法时,将执行子类中的实现。

2. 重载(Overload):

重载是指在同一个类中,可以定义多个具有相同名称但参数列表不同(个数、类型或顺序)的方法。重载的方法应该有相同的名称,但它们的签名必须不同。
class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }

    String concatenate(String str1, String str2) {
        return str1 + str2;
    }
}

在上面的例子中,Calculator 类中有两个名为 add 的方法,它们分别接受两个整数和两个双精度浮点数,这就是方法的重载。另外,还有一个名为 concatenate 的方法,它接受两个字符串参数。

区别总结:

  •  重写:

  - 发生在子类和父类之间。
  - 方法名、参数列表和返回类型必须相同。
  - 用于提供子类对父类方法的特定实现。

  •  重载:

  - 发生在同一个类中。
  - 方法名相同,但参数列表必须不同。
  - 用于在同一个类中提供多个具有相同名称但不同参数的方法。

总的来说,重写用于实现多态,而重载用于提供更灵活的方法调用方式。在实际编程中,根据具体需求和场景来选择使用重写或重载。


转载请注明出处:http://www.zyzy.cn/article/detail/425/Java