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注解可以提醒编译器进行覆盖检查,即确保子类中确实覆盖了父类的方法。
总结:重载和覆盖是实现多态性的两种方式。重载是通过参数的不同来区分方法,可以在同一个类中实现;而覆盖是子类重写了父类的同名方法,需要继承父类才能实现。
