“一个接口,多种实现”体现多态:接口定义统一契约(如Drawable声明draw()),各类独立实现(Circle、Rectangle、Star等各画不同图形),通过接口引用调用,运行时动态绑定,新增实现类(如Triangle)无需修改原有代码,提升解耦性、可扩展性与可维护性。

Java 中“一个接口,多种实现”正是多态最直观、最有力的体现——它不依赖继承层级,而是靠统一契约(接口)约束行为,由不同类各自提供具体逻辑。这种设计让调用方只关心“能做什么”,不关心“谁来做”,从而解耦、可扩展、易维护。
接口定义统一行为契约
接口只声明方法签名,不写实现。比如定义一个 Drawable 接口:
interface Drawable {<br> void draw();<br>}
它不规定怎么画、画成什么样,只承诺“所有实现它的类都必须提供 draw() 方法”。这就形成了标准动作入口,是“一个接口”的起点。
多个类各自实现同一接口
不同类按需给出完全不同的实现,体现“多种实现”:
-
Circle 实现为画一个圆:
System.out.println("绘制圆形:○"); -
Rectangle 实现为画一个矩形:
System.out.println("绘制矩形:□"); -
Star 实现为画一颗星:
System.out.println("绘制星形:★");
三者没有继承关系,但都遵守 Drawable 契约。它们的 draw() 行为完全不同,却能被同一套逻辑处理。
通过接口引用统一调用,运行时自动分发
代码中只操作接口类型,不写死具体类:
Drawable shape1 = new Circle();<br>Drawable shape2 = new Rectangle();<br>Drawable shape3 = new Star();<br><br>shape1.draw(); // 输出:绘制圆形:○<br>shape2.draw(); // 输出:绘制矩形:□<br>shape3.draw(); // 输出:绘制星形:★
变量都是 Drawable 类型,调用的都是 draw(),但 JVM 在运行时根据真实对象类型,自动找到对应实现——这就是动态绑定,是多态落地的核心机制。
扩展无需改原有代码
新增一种图形,比如 Triangle:
- 只需新写一个类,
implements Drawable并实现draw() - 原有使用
Drawable的方法(如绘图工具类、渲染循环)完全不用动
例如已有方法:void renderAll(List<drawable> list) { list.forEach(Drawable::draw); }</drawable>,传入含 Triangle 的列表就能直接工作——这正是“一个接口,多种实现”带来的可扩展性优势。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











