在 Java 编程中,重载和重写是两种实现多态的机制。尽管它们的名字相似,但它们在使用上有着明显的区别。
重写,顾名思义,就是在子类中重新实现父类的方法。当一个子类继承了父类的特性时,可能会希望对父类中的某些方法进行自定义,这就是重写。重写的关键在于方法名、参数列表和返回类型必须完全相同,除了子类方法的返回类型可以是父类方法返回类型的子类。重写使得子类能够提供更具体的实现,从而增强了功能的灵活性。
在重写时,需要注意几点:
public
> protected
> default
> private
)。以下是一个重写的示例代码:
class Father {
public void sayHello() {
System.out.println("Hello from Father");
}
}
class Son extends Father {
@Override
public void sayHello() {
System.out.println("Hello from Son");
}
}
public class Main {
public static void main(String[] args) {
Father father = new Father();
father.sayHello(); // 输出: Hello from Father
Father son = new Son();
son.sayHello(); // 输出: Hello from Son
}
}
在这个示例中,Son
类重写了 Father
类的 sayHello
方法。通过重写,子类可以改变父类的行为。
与重写不同,重载是指在同一个类中,可以定义多个同名的方法,这些方法的参数列表必须不同。重载的参数可以是不同的类型、数量或顺序。重载的主要目的是提高代码的可读性和灵活性。
重载的特性包括:
下面是一个重载的示例代码:
class Calculator {
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;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
System.out.println(calculator.add(1, 2)); // 输出: 3
System.out.println(calculator.add(1.5, 2.5)); // 输出: 4.0
System.out.println(calculator.add(1, 2, 3)); // 输出: 6
}
}
在这个示例中,Calculator
类中的 add
方法被重载,以处理不同类型和数量的参数。
重载和重写是 Java 中实现多态的两种重要机制。重载是在同一类中定义多个同名但参数不同的方法,旨在提高灵活性;而重写则是在子类中重新实现父类的方法,使得子类可以定制父类的行为。理解这两者的区别有助于编写更高效、可维护的代码。