在Java中,重写(Override)和重载(Overload)是两种不同的概念:
- 重写(Override):
- 重写是指子类重新定义(覆盖)了从父类继承而来的方法。
- 重写要求子类方法与父类方法具有相同的方法名、参数列表和返回类型。
- 重写可以修改或扩展父类方法的功能,但不能改变方法的签名。
- 重写可以利用多态性,在运行时根据对象的实际类型调用对应的方法。
示例代码:
class Animal {public void makeSound() {System.out.println("Animal makes sound");}
}class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("Dog barks");}
}Animal animal = new Dog();
animal.makeSound(); // 输出:"Dog barks"
- 重载(Overload):
- 重载是指在同一个类中,可以定义多个同名但参数列表不同的方法。
- 重载方法的特点是参数个数、类型或顺序不同。
- 编译器根据方法的参数列表决定调用哪个重载方法。
- 重载可以提供更灵活的方法调用方式,方便处理不同情况下的不同逻辑操作。
示例代码:
class Calculator {public int add(int a, int b) {return a + b;}public double add(double a, double b) {return a + b;}
}Calculator calculator = new Calculator();
int result1 = calculator.add(5, 3); // 调用 int add(int a, int b)
double result2 = calculator.add(2.5, 4.7); // 调用 double add(double a, double b)
通过重写和重载,可以实现代码的灵活性和可扩展性。重写用于在子类中修改父类方法的行为
,实现特定的逻辑;重载用于定义多个相似功能但参数不同的方法
,提供更多选择。