Java Override/Overload 学习笔记
Override
在 Java 中,Override
是指派生类中重写基类方法的机制。它允许派生类为从基类继承的方法提供不同的实现。
重写方法必须拥有与基类方法相同的名称、参数列表和返回类型。重写方法不能比原始方法丢失单元或抛出更严格的异常。因此,如果重写方法抛出一个未列入原始方法throws子句中的被检查异常,则编译器将报告错误。
下面是一个简单的例子:
javaCopy Codeclass 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 Codeclass 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
允许在同一个类中定义多个具有相同名称但不同参数列表的方法。- 在
Override
和Overload
中,Java 编译器根据传递给方法的参数类型和数量来区分不同的方法。