Java函数的重载及重写方法详解
Java中的方法重载(overload)和方法重写(override)是面向对象编程的重要概念。
方法重载是指在一个类中可以有多个同名方法,它们的参数列表不同,或者参数类型顺序不同。在调用方法时,根据传入的参数的不同来判断使用哪个方法。方法重载可以使代码更加灵活、可读性更高,可以根据参数的不同选择调用不同的方法。
方法重载的要点如下:
1. 方法名相同,参数列表不同。
2. 不同的参数列表可以有不同的参数类型、参数个数、参数顺序。
3. 返回值类型可以相同也可以不同。
4. 方法重载与方法的访问修饰符、返回值类型、抛出的异常无关。
以下是一个例子,演示了方法重载的过程:
public class OverloadedMethodDemo {
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
int result1 = add(2, 3);
double result2 = add(2.5, 3.5);
System.out.println("Result1: " + result1);
System.out.println("Result2: " + result2);
}
}
输出结果为:
Result1: 5 Result2: 6.0
可以看到,add方法被重载了两次,一个接受int类型的参数,返回int类型的结果;另一个接受double类型的参数,返回double类型的结果。
方法重写是指在继承关系中,子类重写了父类的方法,即子类定义了与父类方法名、参数列表相同的方法。子类重写方法时,可以改变该方法的实现逻辑,也可以改变方法的返回类型,但是参数列表必须与父类方法相同。
方法重写的要点如下:
1. 方法名、参数列表必须与父类方法相同。
2. 返回类型可以相同也可以是父类返回类型的子类。
3. 访问修饰符可以相同或者更宽松,不能更严格。
4. 重写的方法不能抛出比父类方法更多的异常。
以下是一个例子,演示了方法重写的过程:
class Animal {
public void sound() {
System.out.println("Animal makes sound...");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks...");
}
}
public class OverrideMethodDemo {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sound();
Dog dog = new Dog();
dog.sound();
}
}
输出结果为:
Animal makes sound... Dog barks...
可以看到,子类Dog重写了父类Animal的sound方法,调用Dog对象的sound方法时会执行子类重写的方法,而不是父类的方法。
方法重载和方法重写是Java语言的两个重要特性。通过重载可以使代码更加灵活,可以根据参数的不同选择调用不同的方法;通过重写可以在继承关系中实现多态特性,子类可以根据自己的需要改变方法的实现逻辑。
