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

Java函数的重载和重写区别及示例演示

发布时间:2023-06-21 01:15:12

Java函数的重载和重写是Java面向对象编程中的两个重要概念,它们都是Java多态性的体现。重载指在同一个类中定义多个同名的函数,而重写是在子类中重写继承自父类的方法。两者都可以实现同名函数的调用,但是它们的实现方式和作用不同。

一、Java函数的重载

Java函数的重载是指在同一个类中定义多个同名但参数类型、个数或顺序不同的函数。它们通过不同的参数列表来实现函数的区别,从而使得同名函数可以实现不同的功能。例如,一个类可以定义两个名为“add”的函数,一个用于求两个整数的和,另一个用于求两个小数的和,代码如下所示:

public class Calculator{
    public int add(int x, int y) {
        return x + y;
    }
    public double add(double x, double y) {
        return x + y;
    }
}

对于执行该类的实例对象,可以根据传入参数的类型来选择具体的add函数,从而实现不同类型数据的加法操作,例如:

Calculator cal = new Calculator();
int a = cal.add(1, 2);           
double b = cal.add(1.0, 2.0);

函数重载实现了“多方法同名”功能,它使得代码更加简洁、清晰,可以提高代码的复用性和可读性。

二、Java函数的重写

Java函数的重写是指在子类中定义与父类中同名、同参数类型和返回值类型的方法,从而实现对父类方法的重新定义。重写方法的访问修饰符不能比父类方法的访问修饰符更严格,例如父类方法为public,重写方法只能是public,不能是protected或private。使用super关键字可以调用父类方法,代码如下所示:

class Person {
    public void eat() {
        System.out.println("eating");
    }
}

class Student extends Person {
    public void eat() {
        super.eat();   //调用父类的方法
        System.out.println("eating bread");
    }
}

在上述代码中,子类Student的eat方法重写了父类Person的eat方法,调用子类的eat方法后,先执行父类的eat方法再执行自己特有的操作。这种重写使得子类可以重新定义父类的行为,从而实现多态性的体现。

总之,Java函数的重载和重写都是Java多态性的体现,它们有着不同的实现方式和作用。函数重载可以为同名函数提供不同的参数类型和数量,以便实现不同的功能,从而提高代码的可读性和可重用性;函数重写可以重新定义父类的方法,在子类中实现多态性的体现,使得子类可以为父类的行为进行特殊化处理。