Java函数的重载和重写以及区别
发布时间:2023-06-03 18:46:37
Java中的函数可以有重载(overloading)和重写(overriding)的概念,两者在Java中的区别如下:
1. 重载(overloading)
重载是指在同一个类中,可以定义多个名称相同但参数列表不同的函数。所谓参数列表不同,指的是参数类型和参数个数不同。Java编译器通过对不同的参数列表进行编译,生成不同的方法签名(signature),来实现函数的重载。
例如,以下代码就是一个函数的重载:
public class Calculator {
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
}
上面的代码中,定义了两个名称为add的函数,但参数类型和个数不同。 个函数接受两个int类型参数,返回int类型结果,第二个函数接受两个double类型参数,返回double类型结果。
重载的好处是可以方便地提供更多的函数选项,使得函数的使用更加灵活。
2. 重写(overriding)
重写是指在子类中定义与父类同名、同参数列表、同返回值类型的函数,这个过程又称为覆盖(override)。
例如:
public class Animal {
public void eat() {
System.out.println("Animal is eating.");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("Dog is eating.");
}
}
上面的代码中,Dog类重写了其父类Animal的eat()方法。在调用Dog类对象的eat()方法时,实际上调用的是Dog类中的eat()方法而不是Animal类中的eat()方法。
重写的好处是可以对父类方法进行修改或增强,使得子类更加符合自己的需求。
区别
重载和重写的区别如下:
1. 参数列表
重载需要参数列表不同,而重写需要参数列表完全相同。
2. 方法签名
重载需要生成不同的方法签名,而重写需要方法签名完全相同。
3. 存在范围
重载可以在同一个类中定义多个同名函数,也可以在不同类中定义同名函数。而重写只能在子类中对父类的方法进行重写。
4. 返回值
重载可以有不同的返回值类型,而重写必须有相同的返回值类型。
5. 作用
重载可以提供更多的功能选择。重写可以对父类方法进行修改或增强。
