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

Java函数的重载和重写有何区别?

发布时间:2023-06-03 03:50:17

Java函数的重载和重写是Java编程语言中非常基础的概念,它们都是通过不同的方式实现了函数的多态性。

1. 函数重载

函数重载是指在同一个类中,可以定义多个同名的函数,但是这些函数的参数列表必须不同,即参数数量、类型或者顺序不同。在调用这些同名函数时,编译器会根据传递给函数的参数进行区分,然后选择最符合参数列表的函数进行调用。函数重载可以提高代码的复用性,让代码更加简洁明了。

如下示例代码:

public class DemoOverload {

    public int add(int a, int b) {

        return a + b;

    }

    public double add(double a, double b) {

        return a + b;

    }

    public String add(String a, String b) {

        return a + b;

    }

}

以上示例代码中,我们定义了三个同名函数add,但是每个函数所接收的参数类型不同。调用这三个函数时,根据传递的参数类型的不同,Java编译器会选择最符合参数类型的函数进行调用。

2. 函数重写

函数重写是指在子类中可以重新定义与父类中同名、参数列表相同的函数,但是子类中的函数体不能与父类中的函数体相同。这样做可以让子类重新实现继承自父类的方法,从而满足子类自身的特定需求,并且可以增加代码复用性和可维护性。

如下示例代码:

public class Animal {

    public void run() {

        System.out.println("动物在奔跑");

    }

}

public class Cat extends Animal {

    @Override

    public void run() {

        System.out.println("猫在奔跑");

    }

}

以上示例代码中,我们定义了一个父类Animal和一个子类Cat,其中Animal类中定义了一个run函数,而子类Cat中重写了这个函数。使用子类对象调用run函数时,会根据重写后的子类函数进行调用。

综上所述,函数重载和函数重写虽然名字相似,但是它们的实现方式和作用不同。函数重载是在同一个类中,定义多个同名函数,参数列表不同,可以提高代码的复用性;而函数重写是在子类中重新定义与父类同名的函数,可以满足子类自身的特定需求,而且增加了代码复用性和可维护性。