欢迎访问宙启技术站
智能推送

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. 作用

重载可以提供更多的功能选择。重写可以对父类方法进行修改或增强。