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

Java函数中重载和覆盖的区别与实现方式

发布时间:2023-09-08 14:07:38

重载和覆盖是Java中的两个重要概念,用于实现多态性,但它们又有着不同的作用和实现方式。

1. 区别:

- 重载是指在一个类中存在多个同名的方法,这些方法具有不同的参数列表。重载方法通过参数的不同来区分,可以有不同的返回类型。重载方法在编译时根据调用参数的类型来选择执行哪个方法。

- 覆盖是指子类重写了父类中的同名方法,方法签名和返回类型必须相同。覆盖方法在运行时根据对象的实际类型来选择执行哪个方法。

2. 实现方式:

- 重载方法的实现方式非常简单,只需要在同一个类中创建具有相同名字但具有不同参数的方法即可。

class Example {
    public void method() {
        // ...
    }
    
    public void method(int num) {
        // ...
    }
    
    public void method(String str) {
        // ...
    }
    
    // ...
}

- 覆盖方法的实现方式需要注意以下几点:

- 子类必须继承父类。

- 方法名、参数类型和参数顺序必须与父类方法相同。

- 访问修饰符不能比父类的方法更严格。

- 子类方法不能抛出比父类方法更宽泛的异常。

class Parent {
    public void method() {
        // ...
    }
}

class Child extends Parent {
    @Override
    public void method() {
        // ...
    }
}

- 在覆盖方法的实现中,使用@Override注解可以提醒编译器进行覆盖检查,即确保子类中确实覆盖了父类的方法。

总结:重载和覆盖是实现多态性的两种方式。重载是通过参数的不同来区分方法,可以在同一个类中实现;而覆盖是子类重写了父类的同名方法,需要继承父类才能实现。