Java Override/Overload 学习笔记

Override

在 Java 中,Override是指派生类中重写基类方法的机制。它允许派生类为从基类继承的方法提供不同的实现。

重写方法必须拥有与基类方法相同的名称、参数列表和返回类型。重写方法不能比原始方法丢失单元或抛出更严格的异常。因此,如果重写方法抛出一个未列入原始方法throws子句中的被检查异常,则编译器将报告错误。

下面是一个简单的例子:

javaCopy Code
class Animal { public void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { @Override public void sound() { System.out.println("Dog barks"); } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.sound(); // 输出 "Dog barks" } }

在上面的示例中,Dog 类继承了 Animal 类,并重写了 sound 方法。当我们创建一个 Dog 对象并调用 sound 方法时,它将输出 Dog barks

Overload

Override 相似,Overload 是指在同一个类中使用相同的名称但不同的参数列表来定义多个方法的机制。编译器根据传递给方法的参数类型和数量来区分不同的方法。

下面是一个简单的例子:

javaCopy Code
class Calculator { public int add(int x, int y) { return x + y; } public double add(double x, double y) { return x + y; } } public class Main { public static void main(String[] args) { Calculator calculator = new Calculator(); System.out.println(calculator.add(2, 3)); // 输出 5 System.out.println(calculator.add(2.5, 3.5)); // 输出 6.0 } }

在上面的示例中,Calculator 类定义了两个 add 方法:一个采用两个整数参数,另一个采用两个双精度参数。当我们创建一个 Calculator 对象并调用 add 方法时,编译器将根据传递给方法的参数类型和数量来选择适当的方法。在此示例中,我们创建了两个不同的 Calculator 实例,并分别调用两个不同的 add 方法进行验证。

总结

  • Override 允许派生类为基类方法提供新的实现。
  • Overload 允许在同一个类中定义多个具有相同名称但不同参数列表的方法。
  • OverrideOverload 中,Java 编译器根据传递给方法的参数类型和数量来区分不同的方法。