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

详解Java函数中的重载与重写

发布时间:2023-08-18 06:10:18

在Java中,重载(Overload)和重写(Override)是两个重要的概念,用于实现多态性和扩展性。它们是面向对象编程的基础。

1. 重载(Overload):重载指在同一类中,方法名相同但参数列表不同的情况下,可以定义多个方法。重载方法具有相同的名称但不同的参数,可以实现不同的功能。重载方法的返回值类型可以相同也可以不同。重载方法是通过参数的个数、类型和顺序来区分的。

例如,以下是一个重载的例子:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
    
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

在上面的例子中,add方法被重载了三次。 个add方法接受两个int类型的参数,返回值为int类型;第二个add方法接受两个double类型的参数,返回值为double类型;第三个add方法接受三个int类型的参数,返回值为int类型。通过参数的个数和类型的不同,三个add方法在调用时可以实现不同的功能。

2. 重写(Override):重写是指子类对父类中同一个方法的重新实现。重写方法必须具有相同的名称、参数列表和返回类型。重写方法主要用于实现多态性,实现对父类方法的扩展或修改。

例如,以下是一个重写的例子:

public class Animal {
    public void say() {
        System.out.println("Animal says...");
    }
}

public class Dog extends Animal {
    @Override
    public void say() {
        System.out.println("Dog barks...");
    }
}

在上面的例子中,Animal类中定义了一个say方法,Dog类继承了Animal类,并对say方法进行了重写。在Dog类中的say方法中输出了"Dog barks...",覆盖了父类Animal中的say方法。当创建Dog对象调用say方法时,会输出"Dog barks..."。

需要注意的是,重写方法中不能降低访问权限(比如将public改为private),也不能抛出父类方法中未声明的异常,但可以抛出更少的或者不抛出异常。此外,重写方法中可以调用父类中的方法,通过super关键字来实现。

总结起来,重载是指在同一类中,方法名相同但参数列表不同的情况下定义多个方法,重载方法通过参数的个数、类型和顺序来区分;重写是指子类对父类中同一个方法的重新实现,重写方法必须具有相同的名称、参数列表和返回类型。重载用于实现不同的功能,而重写用于实现多态性和对父类方法的扩展或修改。在实际开发中,我们可以根据需要使用重载和重写来实现代码的灵活性和可维护性。