接口引用通过多态指向任意实现类实例,本质是编译期看声明类型、运行期看实际对象;只要实现类满足接口契约,就能赋值给接口变量,jvm自动绑定具体实现。

接口引用通过多态指向任意实现类实例,本质是“编译期看声明类型、运行期看实际对象”。只要实现类满足接口契约(即实现了所有抽象方法),就能赋值给该接口类型的变量,JVM 在调用方法时自动绑定到具体实现。
接口引用声明 + 实现类实例化
这是最直接的方式:用接口类型声明变量,右侧用 new 实现类() 初始化。
- 接口本身不能 new,但它的实现类可以
- 赋值后,变量类型是接口,但真实对象是实现类实例
- 只能调用接口中定义的方法(包括 default 和 static)
示例:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
Payment payment = new AlipayPayment(); // 接口引用指向支付宝实现<br>payment.pay(199.0); // 运行时执行 AlipayPayment 的 pay 方法<br><br>payment = new WechatPayment(); // 同一引用可重新指向另一实现<br>payment.pay(199.0); // 运行时自动切换为微信支付逻辑
方法参数接收接口类型
把接口作为形参,让调用方传入任意实现类对象,是面向接口编程的典型实践。
- 业务方法不关心具体是谁实现,只依赖接口行为
- 新增实现类(如 ApplePay)时,无需修改已有方法体
- 实现类可自由替换,不影响上层逻辑
示例:
public class OrderService {<br> private final Payment payment;<br> public OrderService(Payment payment) {<br> this.payment = payment; // 接收任意 Payment 实现<br> }<br> public void checkout(double amount) {<br> payment.pay(amount); // 多态调用,自动路由到实际类<br> }<br>}
集合统一管理多种实现
用接口类型定义集合元素,可将不同实现类对象存入同一容器,遍历时自动调用各自实现。
- 集合声明为
List<payment></payment>,可 add AlipayPayment、WechatPayment 等 - for-each 遍历中调用
pay(),每项按自身类型执行对应逻辑 - 新增支付方式只需加实现类和 add 实例,循环代码零修改
示例:
List<payment> payments = new ArrayList();<br>payments.add(new AlipayPayment());<br>payments.add(new WechatPayment());<br>payments.add(new CreditCardPayment());<br><br>for (Payment p : payments) {<br> p.pay(99.9); // 每次调用都动态绑定到对应实现类}</payment>
工厂或配置驱动的运行时选择
通过工厂方法或配置(如字符串标识)决定创建哪个实现类,并返回接口类型,进一步隐藏实现细节。
- 工厂方法返回
Payment,而非具体类名 - 调用方拿到接口引用后,完全不知道背后是哪个类
- 实现类变更或新增,只需改工厂内部逻辑,外部无感知
示例:
public Payment createPayment(String type) {<br> return switch (type.toLowerCase()) {<br> case "alipay" -> new AlipayPayment();<br> case "wechat" -> new WechatPayment();<br> case "card" -> new CreditCardPayment();<br> default -> throw new IllegalArgumentException("Unknown type");<br> };<br>}<br><br>// 使用方:<br>Payment p = factory.createPayment("wechat");<br>p.pay(50.0); // 仍是接口引用,多态生效Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










