重载(overload)和重写(override)的区别?

Java 基础面试题发布于

一、定义

  • 重载:同一个类中,方法名相同,参数列表(类型/个数/顺序)不同。与返回值无关。
  • 重写:子类重新实现父类的方法,方法签名(名称、参数、返回值)必须一致。

二、对比

维度 重载 重写
位置 同类 父子类
参数列表 必须不同 必须相同
返回值 可不同 相同或协变
权限 可不同 不能更严格
绑定时机 编译期(静态绑定) 运行期(动态绑定)

三、重写的限制

  • 父类方法不能是 final、static、private。
  • 子类方法权限不能比父类更严格(public → protected 不行)。
  • 不能抛出比父类更宽泛的受检异常。