在Java中,方法重写(Method Override)和方法重载(Method Overload)是面向对象编程的重要概念。它们可以让我们写出更加灵活和复杂的代码,提高程序的可读性和可维护性。
方法重写
方法重写是指子类重写父类的方法,使得子类可以根据自己的需要,改写父类的行为。 方法重写的规则如下: 1、子类的方法名、参数列表和返回类型必须与父类的方法名、参数列表和返回类型相同。 2、子类的访问修饰符不能比父类的访问修饰符更为严格。 3、子类的异常类型必须是父类异常类型的子集。 4、父类的方法必须是非final的。 以下是一个简单的方法重写的例子:
class Animal { public void move() { System.out.println("Animal can move"); } } class Dog extends Animal { @Override public void move() { super.move(); System.out.println("Dog can move"); } } public class TestDog { public static void main(String args[]) { Animal animal = new Animal(); Dog dog = new Dog(); animal.move(); dog.move(); } }
上面的例子中,Dog类继承了Animal类,并重写了move()方法。在重写move()方法时,可以使用super关键字调用父类的方法。执行main方法将输出以下结果:
Animal can move Animal can move Dog can move
方法重载
方法重载是指在同一个类中,有多个方法名相同但参数列表不同的方法。方法重载的规则如下: 1、同一类中,方法名相同、参数列表不同。 2、返回类型可以相同也可以不同。 3、方法调用时,Java编译器将根据参数列表的不同,确定调用哪个方法。 以下是一个简单的方法重载的例子:
public class Example { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } public class TestExample { public static void main(String[] args) { Example example = new Example(); System.out.println(example.add(1, 2)); System.out.println(example.add(1.1, 2.2)); } }
上面的例子中,Example类中有两个名字相同,但参数列表不同的add方法。执行main方法将输出以下结果:
3 3.3
总之,在Java中,方法重写和方法重载是实现多态的两种方式。使用它们可以大大增加程序的灵活性和可读性。