多态通过依赖抽象而非具体实现来削弱模块间强依赖。调用方使用接口或父类声明,新增子类无需修改旧代码,符合开闭原则;JVM动态分派确保运行时调用正确实现;接口作为契约提升协同开发可控性。
多态通过让调用方只依赖抽象(接口或父类),不绑定具体实现,直接削弱模块之间的强依赖关系。
当代码中使用接口或抽象类声明变量和参数时,调用逻辑就不再关心背后是哪个子类在工作。比如定义 Shape 接口,Circle 和 Rectangle 分别实现它;绘图方法接收 Shape 类型参数,而无需知道传进来的是圆还是矩形。新增 Triangle 时,只要实现 Shape,原有绘图逻辑完全不用动。
符合开闭原则——对扩展开放、对修改关闭。只要子类遵循父类/接口约定(方法签名一致),运行时就能自动调用对应实现。这种“插拔式”替换能力,避免了在原有业务逻辑里反复添加 if-else 或 switch 判断具体类型,从根本上切断了调用方与实现类的硬编码关联。
JVM 在运行时根据对象实际类型查虚方法表,决定执行哪个重写版本。这意味着编译期只校验父类/接口中是否存在该方法,而执行逻辑由实例类型决定。静态方法、final 方法或私有方法不参与此机制,正说明:只有可被重写的、面向对象的行为,才能享受这种解耦红利。
立即学习“Java免费学习笔记(深入)”;
在多人协作项目中,接口相当于一份契约。前端团队按接口定义调用方式,后端团队各自实现不同服务(如支付模块支持微信、支付宝、银联),只要都实现同一接口,上层代码就能无缝切换。命名、参数、返回值都被约束,减少因风格不统一导致的集成问题,降低跨模块沟通成本。