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

Java函数的重载及重写方法详解

发布时间:2023-07-03 22:12:23

Java中的方法重载(overload)和方法重写(override)是面向对象编程的重要概念。

方法重载是指在一个类中可以有多个同名方法,它们的参数列表不同,或者参数类型顺序不同。在调用方法时,根据传入的参数的不同来判断使用哪个方法。方法重载可以使代码更加灵活、可读性更高,可以根据参数的不同选择调用不同的方法。

方法重载的要点如下:

1. 方法名相同,参数列表不同。

2. 不同的参数列表可以有不同的参数类型、参数个数、参数顺序。

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

4. 方法重载与方法的访问修饰符、返回值类型、抛出的异常无关。

以下是一个例子,演示了方法重载的过程:

public class OverloadedMethodDemo {
    public static int add(int a, int b) {
        return a + b;
    }

    public static double add(double a, double b) {
        return a + b;
    }

    public static void main(String[] args) {
        int result1 = add(2, 3);
        double result2 = add(2.5, 3.5);
        System.out.println("Result1: " + result1);
        System.out.println("Result2: " + result2);
    }
}

输出结果为:

Result1: 5
Result2: 6.0

可以看到,add方法被重载了两次,一个接受int类型的参数,返回int类型的结果;另一个接受double类型的参数,返回double类型的结果。

方法重写是指在继承关系中,子类重写了父类的方法,即子类定义了与父类方法名、参数列表相同的方法。子类重写方法时,可以改变该方法的实现逻辑,也可以改变方法的返回类型,但是参数列表必须与父类方法相同。

方法重写的要点如下:

1. 方法名、参数列表必须与父类方法相同。

2. 返回类型可以相同也可以是父类返回类型的子类。

3. 访问修饰符可以相同或者更宽松,不能更严格。

4. 重写的方法不能抛出比父类方法更多的异常。

以下是一个例子,演示了方法重写的过程:

class Animal {
    public void sound() {
        System.out.println("Animal makes sound...");
    }
}

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

public class OverrideMethodDemo {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.sound();
        
        Dog dog = new Dog();
        dog.sound();
    }
}

输出结果为:

Animal makes sound...
Dog barks...

可以看到,子类Dog重写了父类Animal的sound方法,调用Dog对象的sound方法时会执行子类重写的方法,而不是父类的方法。

方法重载和方法重写是Java语言的两个重要特性。通过重载可以使代码更加灵活,可以根据参数的不同选择调用不同的方法;通过重写可以在继承关系中实现多态特性,子类可以根据自己的需要改变方法的实现逻辑。