一、概念
在Java中,重写(Override)
和 重载(Overload)
是两个重要的概念,尽管它们的名称相似,但它们代表的是不同的概念。
二、重写
重写发生在子类中,当子类提供一个与父类中已存在的方法具有相同方法签名(方法名、参数列表和返回类型)的方法时,这种情况就叫做方法重写。。
特点:
- 必须有继承关系。
- 方法签名必须完全相同,包括方法名、参数列表和返回类型。
- 访问修饰符不能比父类中的方法更严格。
- 通常用于扩展或修改父类的行为。
样例:
// 动物类
class Animal {
public void display() {
System.out.println("动物类方法执行了。。。");
}
}
// 狗类
public class Dog extends Animal {
@Override
public void display() {
System.out.println("狗类方法执行了。。。");
}
}
三、重载
重载发生在同一个类中,当一个类中有两个或更多同名方法,但它们的参数列表不同(参数的数量、类型或顺序不同),这种情况就叫做方法重载。重载允许你使用相同的名称定义多个方法,以适应不同的情况。
特点:
- 不需要继承关系。
- 方法名相同,但参数列表必须不同。
- 返回类型可以不同,但不是区分重载的关键因素。
- 编译器会根据传递给方法的实际参数来决定调用哪个方法。
public class Test {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
在上述示例中,Test 类中的 add 方法有三个版本,分别对应两个整型参数、两个双精度浮点型参数和三个整型参数。
四、总结
总结一下,重写和重载的主要区别在于它们的应用场景和方法签名的要求。
重写涉及继承并更改或扩展父类的行为。
重载在同一类中提供多个同名但参数不同的方法。