"重载"(Overloading)和"重写"(Overriding)是面向对象编程中两个常用的概念,它们分别用于描述不同的特性。
-
重载(Overloading) :
-
定义: 重载指的是在同一个类中,可以定义多个具有相同名字但参数列表不同的方法。参数列表可以包括参数的类型、个数或者顺序。
-
特点: 重载允许一个类有多个方法,它们的名字相同但是参数不同。编译器根据调用时的参数列表来区分调用哪个方法。
-
示例:
public class Calculator { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } }
-
-
重写(Overriding) :
-
定义: 重写是指在子类中重新定义父类中已经定义的方法,但方法名、返回类型和参数列表必须相同。
-
特点: 重写用于实现多态,通过子类对象调用被重写的方法时,实际执行的是子类中的方法,而不是父类中的方法。
-
示例:
class Animal { public void makeSound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { @Override public void makeSound() { System.out.println("Dog barks"); } }
-
总体而言,重载强调的是同一个类中方法名相同但参数不同,而重写强调的是子类覆盖父类中的方法,实现多态的特性。这两个概念都是面向对象编程中的重要概念,用于提高代码的灵活性和可维护性。