Java中重写和重载
突然被问到重写和重载,咋一想有点想不起来了
在 Java 中,重写(Override)和重载(Overload)是两个不同的概念。
一、重写(Override)
- 定义:
- 重写是子类对父类中已有的方法进行重新实现,以满足子类的特定需求。
- 重写的方法必须与父类中被重写的方法具有相同的方法名、参数列表和返回类型。
- 规则:
- 重写的方法不能缩小父类方法的访问权限。例如,父类方法是 public,子类重写的方法不能是 protected 或 private。
- 重写的方法不能抛出比父类方法更多的异常。
- 方法名、参数列表和返回类型必须与父类中被重写的方法完全相同。
- 示例代码:
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
在上面的代码中,Cat
类重写了Animal
类中的makeSound
方法。
二、重载(Overload)
- 定义:
- 重载是在同一个类中,定义多个具有相同方法名但参数列表不同的方法。
- 这些方法可以有不同的参数类型、参数个数或参数顺序。
- 规则:
- 方法名必须相同。
- 参数列表必须不同,可以是参数类型、参数个数或参数顺序不同。
- 返回类型可以相同也可以不同。
- 示例代码:
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
在上面的代码中,Calculator
类中有两个名为add
的方法,它们的参数列表不同,一个接受两个整数参数,另一个接受两个双精度浮点数参数。