Java中的重载和重写是面向对象编程中常见的两种方法,它们可以帮助程序员简化代码,并提高程序的灵活性和可扩展性。
重载(Overloading)是指一个类中有多个方法,它们的方法名相同但方法签名或参数列表不同。例如:
public class Example { public int sum(int a, int b) { return a + b; } public double sum(double a, double b) { return a + b; } }
上面的例子中,Example类中定义了两个名为sum的方法,一个接受两个int类型的参数,另一个接受两个double类型的参数。在调用方法时,编译器会根据参数类型匹配相应的方法。
重写(Overriding)是指子类重写父类中已经有的方法。例如:
class Animal { public void move() { System.out.println("动物可以移动"); } } class Dog extends Animal { public void move() { System.out.println("狗可以跑和走"); } } public class TestDog { public static void main(String args[]) { Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move(); // 执行 Animal 类的方法 b.move(); // 执行 Dog 类的方法 } } 输出: 动物可以移动 狗可以跑和走
在上面的例子中,Dog类重写了Animal类中的move方法。在创建Dog类对象时,b变量的类型是Animal,但它引用了一个Dog类的对象,因此运行时将执行Dog类中的move方法。