返回

Java 重载重写:定义、区别和示例

后端

在 Java 中,重载和重写是两个重要的概念,它们允许我们编写更加灵活和可扩展的代码。重载是指在同一个类中定义多个具有相同名称但参数不同的方法,而重写是指在子类中重新定义父类中的方法。

重载

重载的目的是为了在同一个类中为不同的参数类型或数量提供不同的实现。例如,我们可以在一个类中定义一个名为 add() 的方法,它可以接受两个整数参数并返回它们的和,还可以定义另一个 add() 方法,它可以接受两个浮点数参数并返回它们的和。

重载方法的签名必须不同,即参数的类型或数量必须不同。例如,以下两个方法重载:

public int add(int a, int b) {
    return a + b;
}

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

当我们调用 add() 方法时,Java 编译器会根据实际传递的参数类型来决定调用哪个方法。例如,以下代码调用第一个 add() 方法:

int sum = add(1, 2);

而以下代码调用第二个 add() 方法:

double sum = add(1.5, 2.5);

重写

重写是指在子类中重新定义父类中的方法。重写的方法必须具有与父类方法相同的名称和参数类型,但可以有不同的实现。例如,我们可以在一个子类中重新定义父类中的 add() 方法,以实现不同的加法运算。

重写方法的目的是为了允许子类提供父类方法的定制实现。例如,以下代码中的子类 MyClass 重写了父类 SuperClass 中的 add() 方法,以实现一个新的加法运算:

public class SuperClass {
    public int add(int a, int b) {
        return a + b;
    }
}

public class MyClass extends SuperClass {
    @Override
    public int add(int a, int b) {
        return a * b;
    }
}

当我们在 MyClass 的实例上调用 add() 方法时,将会调用子类中的重写方法,而不是父类中的原有方法。例如,以下代码调用子类 MyClass 中的 add() 方法:

MyClass myClass = new MyClass();
int sum = myClass.add(1, 2);

区别

重载和重写是两个不同的概念,它们之间的主要区别在于:

  • 重载发生在同一个类中,而重写发生在子类中。
  • 重载的方法签名必须不同,而重写的方法签名必须相同。
  • 重载允许我们为不同的参数类型或数量提供不同的实现,而重写允许子类提供父类方法的定制实现。

结语

重载和重写是 Java 中非常重要的两个概念,它们可以帮助我们编写更加灵活和可扩展的代码。重载允许我们在同一个类中为不同的参数类型或数量提供不同的实现,而重写允许子类提供父类方法的定制实现。