Java中如何实现函数重载和函数重写?
Java中函数重载和函数重写是实现多态性的两种方式。函数重载是指在一个类中可以定义多个方法,函数名相同但参数列表不同,而函数重写是指在子类中重新定义父类中的方法。接下来将从以下几个方面详细介绍函数重载和函数重写的实现。
一、函数重载的实现
1. 函数名必须相同。
2. 参数列表必须不同。参数列表包括参数的个数、参数的类型和参数的顺序。
3. 重载函数的返回值类型和访问修饰符可以与原函数不同,但是不能只有返回类型和访问修饰符不同。
例如:
public class OverloadingDemo {
public int add(int x, int y) {
return x + y;
}
public double add(double x, double y) {
return x + y;
}
public String add(String str1, String str2) {
return str1 + str2;
}
}
以上代码展现了如何实现多个同名方法,但参数类型不同,返回值可能不同,实现函数重载。
二、函数重写的实现
1. 子类重写父类方法,方法名、参数个数、参数类型必须相同,方法返回值也必须相同或兼容。
2. 访问修饰符不能比父类的方法限制更严格(例如,父类方法为public,子类方法只能为public)。
3. 子类方法抛出的异常必须与父类方法声明的异常一致或为其子类。
例如:
public class Animal {
public void run() {
System.out.println("Animal is running...");
}
}
public class Dog extends Animal {
@Override
public void run() {
System.out.println("Dog is running...");
}
}
以上代码展现了如何重写父类的run方法,在子类Dog中重写了Animal类中的run方法。注意,需要加上@Override注解,这样编译器才会进行检查。如果没有@Override注解,虽然可以编译通过,但实际上并没有重写父类方法。
总结:
Java中,重载和重写都是实现多态性的重要方式。重载允许我们在同一个类中定义多个方法,使得相似的操作可以使用相同的方法名,提高了代码的复用性。重写则是在子类中重新定义父类的方法,使得同一个方法具有不同的实现,实现了多态性,让代码更加灵活。同时,需要正确理解每个方法中参数和返回值的作用,确保代码语法正确,实现预期功能。
