Java中的重载和重写是两种不同的概念,虽然它们都涉及到方法,但是它们的作用和实现方式都不同。
重载:重载是指在一个类中定义了多个方法,它们具有相同的方法名,但是参数列表不同。Java根据传递给方法的参数自动区分哪个方法应该被调用。例如:
class MathUtils { public static int add(int a, int b) { return a + b; } public static double add(double a, double b) { return a + b; } } MathUtils.add(2, 3); // 返回5 MathUtils.add(2.5, 3); // 返回5.5
在这个例子中,我们定义了两个名为add
的方法,一个用于int
类型的参数,另一个用于double
类型的参数。当我们调用add
方法时,Java会根据传递的参数类型选择正确的方法。
重写:重写指的是在子类中重新实现父类中定义的方法,具有相同的名称、参数列表和返回类型。在子类中对方法进行重写时,子类中的方法会覆盖父类中的方法。例如:
class Animal { public void eat() { System.out.println("Animal is eating..."); } } class Dog extends Animal { public void eat() { System.out.println("Dog is eating..."); } } Animal animal = new Animal(); animal.eat(); // 输出 "Animal is eating..." Dog dog = new Dog(); dog.eat(); // 输出 "Dog is eating..."
在这个例子中,我们定义了一个Animal
类和一个Dog
类,Dog
类继承自Animal
类并重写了eat
方法。当我们分别创建Animal
对象和Dog
对象并调用eat
方法时,我们可以看到Dog
类中的eat
方法覆盖了Animal
类中的eat
方法。