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

Java中的函数重载和函数重写

发布时间:2023-05-26 13:23:30

函数重载和函数重写是Java中重要的概念,两者虽然有着相似的名字,但其实是两个不同的概念。本文将分别介绍函数重载和函数重写,包括它们的定义、使用场景以及实例说明。

一、函数重载

函数重载是指在一个类中可以定义多个名称相同的方法,但参数列表必须不同。换句话说,函数重载要求同一个类中有多个函数名称相同的方法,但它们的参数列表不同,包括参数类型、参数个数或参数顺序等。

Java中的函数重载具有以下特点:

1.函数名称相同,但参数列表不同。

2.返回值类型可以相同也可以不同。

3.可以通过可变参数实现参数个数不同的函数重载。

4.函数的访问权限、修饰符及异常类型都可以不同。

函数重载的优点:

1.提高程序的易读性,便于区分不同的方法。

2.提高程序的灵活性,方便调用不同类型的方法。

3.简化程序设计,避免为了实现功能而新建多个方法。

下面我们来举例说明一下函数重载的使用场景:

public class FunctionOverload {
    int add(int a, int b) {
        return a + b;
    }
    int add(int a, int b, int c){
        return a + b + c;
    }
    double add(double a, double b){
        return a + b;
    }
    public static void main(String[] args) {
        FunctionOverload fo = new FunctionOverload();
        int r1 = fo.add(1, 2);
        int r2 = fo.add(1, 2, 3);
        double r3 = fo.add(1.0, 2.0);
        System.out.println("r1:" + r1);
        System.out.println("r2:" + r2);
        System.out.println("r3:" + r3);
    }
}

在以上代码中,我们定义了一个FunctionOverload类,其中重载了三个add()方法。 个add()方法参数为两个整型数,第二个add()方法参数为三个整型数,第三个add()方法参数为两个double类型数。在主函数中分别调用这三个add()方法,输出结果如下:

r1:3
r2:6
r3:3.0

根据输出结果可知,Java根据传入的参数类型和个数,确定了调用的哪一个add()方法,即实现了函数重载。

二、函数重写

函数重写(Override)指的是子类继承父类后,重新编写(覆盖)父类中声明的方法,使其根据子类的需要来执行。函数重写必须满足以下条件:

1.子类方法的名称、参数列表、返回值必须与父类中被覆盖的方法保持一致。

2.子类方法的访问级别不能低于父类中被覆盖的方法的访问级别。

3.子类方法不能抛出比父类中被覆盖的方法声明更多的异常。

函数重写的实现方法是在子类中定义一个与父类同名、同参数列表、同返回值类型的方法,用注解@override来声明这个方法是重写的父类方法。

下面我们来举例说明一下函数重写的使用场景:

public class Override{
    public static void main(String[] args) {
        Animal animal = new Animal();
        Dog dog = new Dog();
        animal.eat();
        dog.eat();
        Animal animal1 = new Dog();//多态
        animal1.eat();
    }
}
class Animal{
    public void eat(){
        System.out.println("animal eat");
    }
}
class Dog extends Animal{
    @Override
    public void eat(){
        System.out.println("dog eat");
    }
}

在以上代码中,我们定义了一个Animal类和一个Dog类,其中Dog类从Animal类继承下来。我们先定义了一个Animal类的对象animal和一个Dog类的对象dog,然后分别输出它们的eat()方法。最后我们定义一个Animal类的变量animal1,将它指向Dog类的对象,进行多态调用,输出结果如下:

animal eat
dog eat
dog eat

根据输出结果可知,Java调用了Dog类中的eat()方法而非Animal类中的eat()方法,即实现了函数重写。

总之,函数重载和函数重写是Java中非常重要的概念,掌握函数重载和函数重写能够使我们更加灵活地运用Java进行开发。