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