重载是同一类中参数不同的同名方法,用于功能扩展;重写是子类中签名相同的方法替换,体现里氏替换原则。前者编译期静态绑定,后者运行期动态绑定。

重载与重写表面看都是“同名方法”,但它们在面向对象设计中承担完全不同的角色:重载解决的是同一类中行为的多样性,重写支撑的是父子类间行为的可替换性。
重载体现“功能扩展”的设计意图
它不涉及继承关系,只关注当前类如何为相似操作提供多种入口。比如一个计算器类,add(int, int)、add(double, double)、add(int, int, int)并存,不是为了替代彼此,而是让调用者按需选择最匹配的版本。编译器在编译期就根据实参类型和个数决定调用哪个方法——这是一种静态的、面向使用便利性的设计。
- 参数列表必须不同(个数、类型或顺序),仅靠返回值不同不能构成重载
- 访问修饰符、异常声明、返回类型可任意变化,因为它们不影响调用决策
- 本质是接口的“多义性”:同一个方法名承载多个语义变体
重写体现“里氏替换”的设计契约
它强制子类在继承体系中承诺:我能被当作父类来用。Dog类重写Animal的makeSound(),不是为了新增一个声音功能,而是声明“当我被当成Animal使用时,发出的声音应该是汪汪汪”。JVM在运行时根据对象实际类型动态绑定方法——这是一种动态的、面向可替换性的设计。
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 方法签名(名+参数)必须完全一致,返回类型允许协变(如父类返回Animal,子类可返回Dog)
- 访问权限不能更严格(public → protected 不合法),异常不能更宽泛(IOException → Exception 不合法)
- 核心是维护多态安全:任何接受Animal的地方,传入Dog都应正常工作
二者共同服务于面向对象的分层抽象
重载把“怎么做”细化到同一类的不同场景;重写把“是什么”延伸到子类的具体实现。前者让类内部接口更友好,后者让类之间协作更可靠。没有重载,API会因参数组合爆炸而臃肿;没有重写,继承就退化为代码复制,失去多态价值。
立即学习“Java免费学习笔记(深入)”;


















