重载(overload)和重写(override)的区别?
Java 基础面试题发布于
一、定义
- 重载:同一个类中,方法名相同,参数列表(类型/个数/顺序)不同。与返回值无关。
- 重写:子类重新实现父类的方法,方法签名(名称、参数、返回值)必须一致。
二、对比
| 维度 | 重载 | 重写 |
|---|---|---|
| 位置 | 同类 | 父子类 |
| 参数列表 | 必须不同 | 必须相同 |
| 返回值 | 可不同 | 相同或协变 |
| 权限 | 可不同 | 不能更严格 |
| 绑定时机 | 编译期(静态绑定) | 运行期(动态绑定) |
三、重写的限制
- 父类方法不能是 final、static、private。
- 子类方法权限不能比父类更严格(public → protected 不行)。
- 不能抛出比父类更宽泛的受检异常。