重写(Override)指的是在子类中重新定义父类中已经存在的方法,方法名、参数列表和返回类型都必须和父类方法保持一致。重写关注的是继承关系,子类通过重写父类的方法来实现自己特有的功能。重写时,子类中的方法会覆盖父类中同名的方法。
下面是一个简单的例子:
class Animal {
public void sound() {
System.out.println("动物发出声音");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("喵喵喵");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sound(); // 输出:动物发出声音
Cat cat = new Cat();
cat.sound(); // 输出:喵喵喵
}
}
在上面的例子中,Animal类中的sound()方法被Cat类重写了。当我们调用Cat对象的sound()方法时,输出的是"喵喵喵"而不是"动物发出声音"。
重载(Overload)指的是在一个类中定义多个方法,它们具有相同的方法名但是参数列表不同。重载关注的是方法的参数类型和个数,可以通过提供不同的参数来处理不同的情况。在调用时,Java会根据传入的参数类型和个数来自动匹配合适的方法。
下面是一个简单的例子:
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int result1 = calculator.add(2, 3);
System.out.println(result1); // 输出:5
double result2 = calculator.add(2.5, 3.7);
System.out.println(result2); // 输出:6.2
}
}
在上面的例子中,Calculator类中定义了两个名为add()的方法,一个接受两个int类型的参数,另一个接受两个double类型的参数。当我们调用add()方法时,根据传入的参数类型来确定使用哪个重载的方法。
? 重写(Override)关注的是继承关系,子类重写父类中已有的方法,覆盖原有实现。
? 重载(Overload)关注的是方法的参数类型和个数,通过提供不同的参数来处理不同的情况,在同一个类中定义多个方法。