2022-05-23 02:40:57
Java中重写(Override)和重载(Overload)的核心区别如下:
1. 定义与作用范围
2. 参数与返回值规则
参数列表必须不同(类型、数量或顺序至少一项差异)。
返回值类型可相同或不同(不能仅通过返回值区分重载)。
参数列表和返回值类型必须与父类方法完全一致。
子类返回值可以是父类方法返回类型的子类(协变返回类型)。
3. 访问权限与异常处理
访问修饰符(如public、private)可自由调整。
抛出的异常类型和数量不影响重载。
子类方法的访问权限不能比父类更严格(如父类为protected,子类不能为private)。
抛出的异常必须是父类方法异常的子类或相同类型,不能新增检查异常。
4. 关键限制
不能仅通过返回值类型或访问修饰符差异实现重载。
若父类方法为private,子类中同名方法视为新方法而非重载。
父类方法为final或static时不可重写。
父类方法为private时,子类无法重写(因不可见)。
5. 多态性体现
总结: